通缉但未调用:但是,还有其他与此模拟的交互:

时间:2011-07-31 10:11:19

标签: mockito

想要但未被调用:但是,这个模拟还有其他的互动:

这是在尝试验证特定方法上的对象上的调用时会遇到的模拟错误,但是如果您与该对象的其他方法进行了交互但未提及的那个方法。 如果你有一个名为CustomerService的对象,并说它有两个名为saveCustomer()和verifyExistingCustomer()的方法, 并且你的mockito看起来像验证(customerService,atleast(1))。verifyExistingCustomer(customer),但在你的实际服务中你至少调用了saveCustomer()。

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

1 个答案:

答案 0 :(得分:5)

根据您的描述,看起来您正在告诉您的模拟您希望verifyExistingCustomer()被调用,但您实际上并未调用它。

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

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

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

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

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

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