Итак, вот сценарий и проблема, с которой я столкнулся, объясненная в коде
// 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;
}
Проблема, с которой я сталкиваюсь, заключается в том, что foo, переданный постом mockMvc, является новым экземпляром Foo, поэтому оператор if для myService.postFoo (foo) не выполняется. Я предполагаю, что движок использовал jsonString моего объекта foo, чтобы создать новый объект, идентичный по полю, но другой объект, таким образом делая этот оператор 'if' не удачным.
Как я могу обойти это?