我已经在我的一个项目中实施了 Masterpass SDK 以进行结帐。该 API 用于通过 CallBackUrl 和 OrginURL 获取请求 Token 该 API 已成功实现并按预期工作。
问题:我在使用 Mockito 创建 junit 测试用例时遇到问题。
代码:
public void invokeService(AuthTokenRequestBean requestBean) throws Exception {
retrieveAuthTokenService = new RetrieveAuthTokenService(requestBean);
when(processorFactory.createService(eq(RetrieveAuthTokenService.class),
any(AuthTokenRequestBean.class))).
thenReturn(retrieveAuthTokenService);
Mockito.when(retrieveAuthTokenService.getOutput()).thenReturn(response);
Mockito.when(retrieveAuthTokenService.process(any(FlowCtx.class))).thenReturn(response);
}
例外:
rg.mockito.exceptions.misusing.MissingMethodInvocationException:
when() 需要一个参数,该参数必须是“模拟方法调用”。例如:when(mock.getArticles()).thenReturn(articles);
此外,此错误可能会出现,因为: 1. 您存根以下任一方法:final/private/equals()/hashCode() 方法。这些方法不能被存根/验证。不支持在非公共父类上声明的模拟方法。2. 在 when() 中,您不会在 mock 上调用方法,而是在其他对象上调用方法。
如果有人在使用 junit 模拟这些 api 工作,需要帮助。是否有任何其他框架可用于模拟。