需要但未调用:但是,此模拟还有其他交互:
这是一个 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/