mockito 我如何模仿GoogleCredential来测试我的业务逻辑

z9ju0rcb  于 2022-11-08  发布在  Go
关注(0)|答案(2)|浏览(147)

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

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

但是我在“when”调用过程中得到一个错误,指示GoogleCredential对象内部的“lock”示例为空。是否有某种方法可以让Mockito成功地存根该方法调用?

vbkedwbf

vbkedwbf1#

好了,我还没有意识到这个方法是“final”,所以我不得不使用PowerMockito来存根final方法。所以,由于我使用的是TestNG,我修改了类签名为“extends PowerMockTestCase”,并添加了类注解“@PrepareForTest(GoogleCredential.class)...”最后,在测试方法中:

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

这些变更允许对该方法进行模拟/存根测试。

szqfcxe2

szqfcxe22#

只是为了记录在案,七年后你可以看看MockGoogleCredential,就是为了这个目的而做的。

相关问题