在单元测试中,有时候会用到Mockito中的when(...).thenReturn(...)设置方法的返回值,但是有的时候when条件中返回的值,和thenReturn中返回的值的类型不一样,这时会出现Cannot resolve method 'thenReturn()'错误。
这时可以使用以下两种方法解决:
1、直接在thenReturn中强制转化成相应类型
HttpClient httpClient=new DefaultHttpClient();
HttpClient spy=spy(httpClient);
whenNew(DefaultHttpClient.class).withNoArguments().thenReturn((DefaultHttpClient) spy);
HttpClient client=new DefaultHttpClient();
client.getParams();
verify(spy).getParams();
2、利用Answer方法设置返回值
HttpClient httpClient=new DefaultHttpClient();
HttpClient spy=spy(httpClient);
whenNew(DefaultHttpClient.class).withNoArguments().then(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
return spy;
}
});
HttpClient client=new DefaultHttpClient();
client.getParams();
verify(spy).getParams();