想要但未被调用:但是,这个模拟还有其他的互动:
这是在尝试验证特定方法上的对象上的调用时会遇到的模拟错误,但是如果您与该对象的其他方法进行了交互但未提及的那个方法。 如果你有一个名为CustomerService的对象,并说它有两个名为saveCustomer()和verifyExistingCustomer()的方法, 并且你的mockito看起来像验证(customerService,atleast(1))。verifyExistingCustomer(customer),但在你的实际服务中你至少调用了saveCustomer()。
知道如何解决这个问题吗?
答案 0 :(得分:5)
根据您的描述,看起来您正在告诉您的模拟您希望verifyExistingCustomer()
被调用,但您实际上并未调用它。
您应该查看您的测试设计,特别是确保您可以(通过模拟)隔离测试以单独测试每个方法。
如果您的代码中有某些内容决定是调用saveCustomer()
还是verifyExistingCustomer()
,那么您应该尝试模拟代码检查的数据,以便您可以单独测试每个数据。
例如,如果您的代码如下所示:
if (customer.getId() == 0) {
saveCustomer(customer);
} else {
verifyExistingCustomer(customer);
}
然后,您可以通过为客户中的id设置零值和非零值来隔离两个单独的测试。
如果你想分享你的代码,我可能会给你一个更好的例子。