使用 spring-test-mvc jsonpath 进行测试返回 null [英] Testing with spring-test-mvc jsonpath returns null

查看:39
本文介绍了使用 spring-test-mvc jsonpath 进行测试返回 null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using Spring's "spring-test-mvc" library to test web controllers. I have a very simple controller that returns a JSON array. Then in my test I have:

@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

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

To quickly check what I actually get I ran the below test:

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

它在 MockHttpServletResponse

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

I'm not sure why jsonPath is not able to see fName in the JSON array.

推荐答案

你的 json 响应体是什么样的?您可以通过执行 .andDo(print())

What does your json response body look like? You can see it by doing an .andDo(print())

您可能想尝试 jsonPath("$.fName").

这是假设您的 json 响应是:{"fName":"first name"}

This is assuming that your json response is: {"fName":"first name"}

如果您的响应是一个数组,那么您需要 jsonPath("$[0].fName") 来获得如下响应:[{"fName":"first name"},{"fName":"first name #2"}]

If your response is an array then you need jsonPath("$[0].fName") for a response like: [{"fName":"first name"},{"fName":"first name #2"}]

您可以在以下位置查看更多示例:http://goessner.net/articles/JsonPath/

You can see more examples at: http://goessner.net/articles/JsonPath/

这篇关于使用 spring-test-mvc jsonpath 进行测试返回 null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆