mockito - 需要但未调用 : However, 与此模拟还有其他交互:

标签 mockito

需要但未调用:但是,此模拟还有其他交互:

这是一个 mockito 错误,当您尝试验证对特定方法的对象的调用时,您会遇到这种错误,但发生的情况是您与该对象的其他方法进行了交互,而不是提到的方法。 如果您有一个名为 CustomerService 的对象,并说它有两个方法,分别名为 saveCustomer() 和 verifyExistingCustomer(), 并且您的 mockito 看起来像 verify(customerService, atleast(1)).verifyExistingCustomer(customer),但在您的实际服务中,您至少调用了一个 saveCustomer()。

知道如何解决这个问题吗?

最佳答案

根据您的描述,您似乎是在告诉您的模拟您期望调用 verifyExistingCustomer() 但您实际上并没有调用它。

您可能应该查看您的测试设计,特别是确保您可以(通过模拟)隔离您的测试以单独测试每个方法。

如果您的代码中有某些东西决定是调用 saveCustomer() 还是 verifyExistingCustomer(),那么您应该尝试模拟代码检查的数据,以便您可以单独测试每个。

例如,如果您的代码如下所示:

if (customer.getId() == 0) {
 saveCustomer(customer);
} else {
 verifyExistingCustomer(customer);
}

然后您可以有两个单独的测试,您可以通过为客户中的 id 设置零值和非零值来隔离它们。

如果您想分享您的代码,我可能会给您一个更好的例子。

关于mockito - 需要但未调用 : However, 与此模拟还有其他交互:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6888809/

相关文章:

java - 将 Mockito 与 Kotlin 一起使用时,如何绕过 any() 不得为空?

java - 如何在不调用原始方法本身的情况下在 mockito 中设置对模拟对象方法的调用

java - Mockito - thenReturn 总是返回空对象

java - 无法使用 InjectMocks-Mockito 实例化模拟对象

testing - 为什么模拟测试框架有帮助?

java - 使用 Mockito 对 Junit 中的私有(private)函数进行单元测试

java - 如何使用 Mockito 在单元测试中模拟 LocalCache

java - Lombok @Synchronized 与 Mockito 抛出 NPE

java - 模拟 CGLIB 增强对象

java - 使用mockito 来模拟具有通用方法的服务