У меня есть этот класс тестирования (для тестирования по контракту):
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {ServiceApplication.class})
@AutoConfigureMockMvc
@AutoConfigureWireMock(port = 0, stubs = "classpath*:/META-INF/**/mappings/**/*.json")
@ActiveProfiles({"local", "mock"})
@DirtiesContext
public abstract class ContractBase {
@Autowired
private MockMvc mvc;
@MockBean
private DocSolIngestionInterface docSolIngestionInterface;
@MockBean
private DocSolRequest docSolRequest;
@Before
public void test() {
RestAssuredMockMvc.mockMvc(this.mvc);
Mockito.when(docSolIngestionInterface.postDocSolRequest(docSolRequest))
.thenReturn(ResponseEntity.ok().header("content-type", "application/json; charset=UTF-8").body(createDocSolResponseMock()));
}
Вызов метода, с которым у меня возникают проблемы, заключается в следующем методе в моем контроллере REST:
@Override
public ResponseEntity<DocSolResponse> postAssessment(@RequestBody final Assessment body) {
DocSolRequest docSolRequest = mapDocSolRequest.buildDocSolRequestModel(body);
HERE---> ResponseEntity<DocSolResponse> docSolResponse docSolIngestionInterface.postDocSolRequest(docSolRequest);
return docSolResponse;
}
docSolIngestionInterface
- это простой клиент OpenFeign.
Когда я пытаюсь заглушить это с помощью вышеуказанного метода в моем тестовом классе: Mockito.when(docSolIngestionInterface.postDocSolRequest(docSolRequest))
.thenReturn(ResponseEntity.ok().header("content-type", "application/json; charset=UTF-8").body(createDocSolResponseMock()));
возвращает null
. Однако, когда я печатаю его на консоли в моем тестовом методе, он печатает все тело так, как я ожидал.
createDocSolResponseMock()
- это локальный метод в моем тестовом классе, который просто создает мой POJO. Эти объекты serializable
.
Я понятия не имею, почему, когда я пытаюсь заглушить это docSolRequest
, это всегда null
.