spring 如何在MockRestServiceServer中Assertjson内容?

sd2nnvve  于 2023-06-21  发布在  Spring
关注(0)|答案(5)|浏览(99)

如何告诉MockRestServiceServer在junit @Test期间期望特定的json内容?
我想我可以期待一个json字符串,如下所示:.andExpect(content().json(...)),但该方法不存在。那么,我该如何重写下面的内容呢?

private MockRestServiceServer mockServer;
private ObjectMapper objectMapper; //jackson

Person p = new Person();
p.setFirstname("first");
p.setLastname("last");

//mocking a RestTemplate webservice response
mockServer.expect(once(), requestTo("/servlet"))
        .andExpect(content().json(objectMapper.writeValueAsString(p))) //.json() does not exist! why?
        .andRespond(withSuccess(...));
ymzxtsji

ymzxtsji1#

例如,您可以使用:

mockServer.expect(ExpectedCount.once(), requestTo(path))
                .andExpect(method(HttpMethod.POST))
                .andExpect(jsonPath("$", hasSize(1)))
                .andExpect(jsonPath("$[0].someField").value("some value"))
oprakyz7

oprakyz72#

看来你的spring-test版本低于4.2
查看https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/web/servlet/result/ContentResultMatchers.html#json-java.lang.String-boolean-
您可以更新您的spring test依赖项,以便能够使用您提供的代码。

uelo1irk

uelo1irk3#

ContentRequestMatcher对象似乎支持从spring-test版本5.0.5.RELEASE开始的JSON字符串。

fwzugrvs

fwzugrvs4#

spring-test 版本5.0.5中,添加了请求的json方法。现在,我能写了

.andExpect(content().json(objectMapper.writeValueAsString(someDTO)))
wswtfjt7

wswtfjt75#

如何使用jsonPath?andExpect(jsonPath(“$.firstname”,is(“first”)))

相关问题