Java 模拟复杂的api调用
我在理解复杂api调用中的spring@MockBean时遇到了一些问题:Java 模拟复杂的api调用,java,spring,Java,Spring,我在理解复杂api调用中的spring@MockBean时遇到了一些问题: serviceCommunication.callAPI(HttpMethod.POST, ServiceCommunication.TokenType.TokenTypeApplication, "document-service",
serviceCommunication.callAPI(HttpMethod.POST,
ServiceCommunication.TokenType.TokenTypeApplication,
"document-service",
URIConstants.CREATE_DOCUMENT,
docDTO,
new ParameterizedTypeReference<ApiResultResponse<String>>() {
});
serviceCommunication.callAPI(HttpMethod.POST,
ServiceCommunication.TokenType.TokenTypeApplication,
“文件服务”,
URIConstants.CREATE_文档,
docDTO,
新的ParameteredTypeReference(){
});
我在考试前模拟了以下内容:
when(serviceCommunication.callAPI(eq(HttpMethod.POST),
any(ServiceCommunication.TokenType.class),
eq("document-service"),
eq(URIConstants.CREATE_DOCUMENT),
any(),
eq(new ParameterizedTypeReference<ApiResultResponse<String>>() {}))).thenReturn(new ApiResultResponse<>(documentID));
when(serviceCommunication.callAPI(eq(HttpMethod.POST)),
任何(ServiceCommunication.TokenType.class),
eq(“文件服务”),
eq(创建文档),
any(),
eq(新的参数化类型引用(){})),然后返回(新的ApiResultResponse(documentID));
但是我得到了一个空的结果,我错在哪里
高级感谢我解决了,我模拟了任务执行器,问题是当在另一个线程中调用mock bean时我发现在创建mock的同一个线程中调用调用时,调用有效,但在单独的线程中调用时无效。您的问题可能是matchers eq的最后一次对齐(new ParameteredTypeReference(){})您指定它是ParameteredTypeReference的一个新实例的eq,然后用另一个实例调用。您尝试过any(ParameteredTypeReference.class)吗?