这是我所面临的场景和问题,在代码中得到了解释
// the call that I am making in my test, please note that myService is a Mocked object
Foo foo = new Foo();
when(myService.postFoo(foo)).thenReturn(true);
mockMvc.perform(post("/myEndpoint")
.contentType(APPLICATION_JSON_UTF8)
.content(toJsonString(foo))
.andExpect(status().isAccepted());
// this is the controller method that get's called
@PostMapping("/myEndpoint")
@ResponseStatus(code = HttpStatus.ACCEPTED)
public String postFoo(@RequestBody Foo foo) {
if (myService.postFoo(foo)) {
return "YAY";
}
return "" + 0 / 0;
}
我面临的问题是,mockMvc的帖子传递的foo是Foo的新实例,因此myService.postFoo(foo)的if语句失败。我假设引擎使用了我的foo对象的jsonString来创建一个新的字段,该字段在字段上是相同的,但是是一个不同的对象,从而使'if'语句失败。
我该如何解决?
答案 0 :(得分:1)
在您的模拟游戏中使用any(Foo.class),如果您的if应该匹配。