Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试SpringMVC响应模式(忽略响应项中的json字段)_Java_Json_Spring_Spring Mvc_Junit - Fatal编程技术网

Java 测试SpringMVC响应模式(忽略响应项中的json字段)

Java 测试SpringMVC响应模式(忽略响应项中的json字段),java,json,spring,spring-mvc,junit,Java,Json,Spring,Spring Mvc,Junit,我正在测试一个spring MVC应用程序。我需要确保对浏览器的响应具有特定的模式,我的应用程序会返回一些json,对于每个json项,都有一个名为DT_RowId的字段,我不想比较,因为DT_RowId包含一个随机数。因此,我想比较除DT_RowId及其内容之外的所有Json正文 顺便说一下,DT_RowId的一个典型出现是“DT_RowId”:“840770953772”。典型的json响应是: {"id":-1,"fieldErrors":[],"aaData":[{"id":8002,"

我正在测试一个spring MVC应用程序。
我需要确保对浏览器的响应具有特定的模式,我的应用程序会返回一些json,对于每个json项,都有一个名为DT_RowId的字段,我不想比较,因为DT_RowId包含一个随机数。因此,我想比较除DT_RowId及其内容之外的所有Json正文
顺便说一下,DT_RowId的一个典型出现是“DT_RowId”:“840770953772”。典型的json响应是:

{"id":-1,"fieldErrors":[],"aaData":[{"id":8002,"firstname":"Bob","lastname":"Jones","email":"bob.jones@gmail.com","DT_RowId":"8407709537703772"},{"id":8002,"firstname:"Dan","lastname":"Jones","email":"dan.jones@gmail.com","DT_RowId":"8404309537701754"}]}
下面是我的测试:

@Test
public void testGetUsersJson() throws Exception {
    mockMvc.perform(get("/users")
        .accept(MediaType.APPLICATION_JSON))

        .andDo(print())

        .andExpect(content().contentType("application/json"))
        // How can I modify the line below??
        .andExpect(content().bytes(IOUtils.toByteArray(ctx.getResource("classpath:responses/users.getUsersJson.mywebapp.response.json").getInputStream())))
        .andExpect(status().isOk())
        .andExpect(redirectedUrl(null))
        .andExpect(forwardedUrl(null));
}

如何修改上面的代码?我想比较除“DT_RowId”字段之外的所有Json响应。有什么好主意吗?

你可以使用andExpect(content().matches(这里是regex)),并编写一个regex来匹配你的用户。getUsersJson.mywebapp.response.json内容不包括你的DT_RowId。

你需要
DT_RowId
字段吗?如果不是,为什么不从JSON响应中省略它呢?是的,我需要DT_RowId字段,否则这个问题就没有任何意义了,它只是一个问题。如果您根本没有在客户机中使用DT_RowId,那么省略它将使比较更容易。有时人们看不到显而易见的东西,因为他们看错了地方。使用正则表达式验证JSON非常麻烦,而且不符合JSON。我会建议使用也很好。