如何在 MockRestServiceServer 中断言 json 内容?

mem*_*und 5 spring spring-mvc spring-test

我怎么知道在 junit 期间MockRestServiceServer期待特定的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(...));
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以使用例如:

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


小智 1

spring-testjson 5.0.5 版本中添加了请求的方法。现在,我可以写了

.andExpect(content().json(objectMapper.writeValueAsString(someDTO)))
Run Code Online (Sandbox Code Playgroud)