gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:10:39 25 4
gpt4 key购买 nike

我正在使用 Spring 的“spring-test-mvc”库来测试 Web Controller 。我有一个非常简单的 Controller ,它返回一个 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无法看到 fName在 JSON 数组中。

最佳答案

如果您将 json 路径依赖项添加到 maven,或者将 jar 添加到您的库中,那么它将起作用。我认为 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 - 使用 spring-test-mvc jsonpath 进行测试返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13362372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com