[英]How to mock private method and method which return CompletableFeature using Mockito
我正在尝试为两种方法编写单元测试用例,其中一种是调用私有方法,另一种是使用返回 CallableFeature object 的方法。 我已经尝试为两者编写测试用例,但它对我来说不起作用,我发布了两种方法及其测试用例
私有方法
public class WebServiceCreator{
@Autowired
private RestTemplateBuilder builder;
public RestTemplate getTemplate(int a,int b){
RestTemplate restTemplate =null;
try{
HttpComponentsClientHttpRequestFactory cFactory
= clientReqFactory(a,b);
restTemplate = builder.requestFactory(()->cFactory)
.build()
}catch(Exception e){
}
return restTemplate;
}
private HttpComponentsClientHttpRequestFactory cFactory (int a,int b){
HttpComponentsClientHttpRequestFactory fac = new HttpComponentsClientHttpRequestFactory ();
fac.setConnection(a);
fac.setDisconnect(b);
return fac;
}
Private方法的单元测试用例
@RunWith(PowerMockRunner.class)
class WebServiceCreatorTest{
@Mock
RestTemplate restTemplate;
@InjectMocks
WebServiceCreator webServiceCreator;
@Mock
RestTemplateBuilder builder;
@Test
public void testGetTemplate(){
HttpComponentsClientHttpRequestFactory clientFactory = Mockito.mock(HttpComponentsClientHttpRequestFactory);
HttpComponentsClientHttpRequestFactory spy = PowerMockito.spy(clientFactory);
PowerMockito.doReturn(clientFactory).when(spy,"cFactory",anyInt(),anyInt());
restTemplate = builder.requestFactory(()-> clientFactory ).build();
Mockito.when(webServiceCreator.getRestTemplate(any(),any())).thenReturn(restTemplate);
Assert.asserNotNull(restTemplate);
}
返回 complatableFeature 的方法
public class ServiceUpdater{
@Autowired
private WebserviceProvider provider;
public MyServiceResponse getMyServiceResponse( MyServiceRequest request){
MyServiceResponse response = null;
try{
CompletebaleFeature<ResponseEntity<MyServiceResponse>> keepRequestToService =
provider.keepRequestToService(request);
response = keepRequestToService.get().getBody();
}catch(Exception e){
}
return response;
}
单元测试用例
@RunWith(PowerMockRunner.class)
class ServiceUpdaterTest{
@Mock
WebserviceProvider provider;
@Mock
ServiceUpdater serviceUpdater;
@Test
public void testGetMyServiceResponse(){
MyServiceRequest request = new MyServiceRequest ();
request.getId();
request.getName();
request.getPartition();
MyServiceResponse response;
try{
provider = Mockito.mock(WebserviceProvider.class);
CompletableFuture<ResponseEntity<MyServiceResponse>> submitTo =
provider.submitTo(request);
Mockito.when(serviceUpdater.getMyServiceResponse(request)).thenReturn(response);
Assert.asserNotNull(response);
}
单元测试正在运行,但我认为它们没有正确编写为调试为它们提供 NULLpointer EXception。请让我知道如何正确编写它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.