我正在为我的一个应用程序编写单元测试,部分测试需要模拟google-api-java-client的GoogleCredential对象。我们使用服务帐户在SOA中的服务之间进行身份验证。我想做类似的事情:

GoogleCredential cred = mock(GoogleCredential.class);
when(cred.refreshToken()).thenReturn(true);


但是在“ when”调用期间出现错误,指示GoogleCredential对象内部的“ lock”实例为null。有什么方法可以使Mockito成功存根方法调用?

最佳答案

好的,因此我没有意识到所讨论的方法是“最终的”,因此我不得不使用PowerMockito对最终方法进行存根。因此,由于我使用的是TestNG,所以我将类签名修改为“扩展PowerMockTestCase”,并添加了类注释“ @PrepareForTest(GoogleCredential.class)” ...最后,在测试方法中:

PowerMockito.stub(credentials.getClass().getMethod("refreshToken")).toReturn(true);


这些更改允许模拟/添加方法以进行测试。

09-11 07:31