如何在MockRestServiceServer中声明json内容?

时间:2018-03-14 16:35:11

标签: spring spring-mvc spring-test

如何告诉MockRestServiceServer在junit json期间预期特定的@Test内容?

我以为我可以期待一个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(...));

4 个答案:

答案 0 :(得分:1)

似乎你的弹簧测试版本低于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依赖项,以便能够使用您提供的代码。

答案 1 :(得分:1)

似乎ContentRequestMatcher对象支持以spring-test version 5.0.5.RELEASE开头的JSON字符串。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可以使用例如:

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