我有这个测试班(用于合同测试):
@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
。