繁体   English   中英

如何使用 Mockito 模拟返回 CompletableFeature 的私有方法和方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM