其他分享
首页 > 其他分享> > 使用spring-test-mvc jsonpath进行测试返回null

使用spring-test-mvc jsonpath进行测试返回null

作者:互联网

我正在使用Spring的“spring-test-mvc”库来测试Web控制器.我有一个非常简单的控制器,它返回一个JSON数组.然后在我的测试中我有:

@Test
public void shouldGetAllUsersAsJson() throws Exception {
    mockMvc.perform(get("/v1/users").accept(MediaType.APPLICATION_JSON))
            .andExpect(content().mimeType(MediaType.APPLICATION_JSON))
            .andExpect(jsonPath("fName").exists());
}

以上测试返回:

java.lang.AssertionError: No value for JSON path: fName

为了快速检查我实际得到的内容,我运行了以下测试:

@Test
public void shouldPrintResults() throws Exception {
    mockMvc.perform(get("/v1/users").accept(MediaType.APPLICATION_JSON))
            .andDo(print());
}

它在MockHttpServletResponse的主体中返回正确的JSON数组

我不确定为什么jsonPath无法在JSON数组中看到fName.

解决方法:

如果将json路径依赖项添加到maven,或将jar添加到lib,那么它将起作用.我认为Spring在最新的Spring 3.2.0 RC1版本中没有包含jsonPath依赖项.我猜测Spring-Test-MVC独立项目也是如此.

这是Maven的依赖:

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>0.8.1</version>
    <scope>test</scope>
</dependency>

您可能还需要hamcrest库来使用jsonPath(“$.test”).value(“test”)

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-library</artifactId>
    <version>1.3</version>
    <scope>test</scope>
</dependency>

标签:spring,mockito,spring-test,spring-test-mvc,jsonpath
来源: https://codeday.me/bug/20190712/1439058.html