咨询一个java问题

d
daSHXiWanGon
楼主 (未名空间)

都讨论刷题,我来一个java问题,目前卡住了
大概背景是
我实现了一个dstBiz
用于call 一个url的Rest service,这个api是calculateDST
api本身的功能已经实现和验证
目前要写unit test case,
使用mockRestClient,
当api使用mockRestClient时,api调post访问url时,mockRestClient
就直接返回一个假的dto,然后api直接读取这个假dto再读取字段返回结果

@BeforeMethod
public void setUpMocks(){
mockResponse=Mockito.mock(ServiceDataResoponse.class);
dspBizImpl=new DSTBizImpl(new FakeRestClientProvider());
}

@Test
public void testGoodResponse() throws BusinessException(){
MyResponseDTO responseDTO=new MyResponseDTO();
responseDTO.setData(100);
when(mockResponse.getData()).thenReturn(responseDTO);
MyDTO request=new MyDTO();
int res=dspBizImpl.calculateDST(request);
assertEquals(100,res);
}

private class FakeRestClientProvider implements IRestClientProvider{
RestClient mockRestClient =mock(RestClient.class);
when(mockRestClient.header(any)).thenReturn(mockRestClient);
//这一行有问题 jdk compile只接受原生Response类型的mockResponse
//但calculateDST返回的response是已经定义好的ServiceDataResoponse

when(mockRestClient.post(any())).thenReturn(mockResponse);
return mockRestClient;
}

搜了下,可以使用doReturn.when
如果定义mockResponse的类型为ServiceDataResponse.
doReturn(mockResponse).when(mockRestClient.post(any()))
编译时没问题。
build时报
doReturn(mockResponse).when(mockRestClient.post(any()))这一行
存在UnfinishedStubbingException ,