我在一个项目中使用 Kiwi,但不太清楚何时使用 amock
与 a nullMock
。以下是 Kiwi 的文档目前提供的内容:
当一个普通的模拟对象收到一个它不期望的选择器或消息模式时,它会引发一个异常。当在模拟上使用存根或接收期望时,预期的消息会自动添加到模拟中。
如果您不关心模拟接收其他消息,并且不希望引发异常,则使用空模拟(也称为空对象)。
这种差异会在什么样的情况下发挥作用?
我在一个项目中使用 Kiwi,但不太清楚何时使用 amock
与 a nullMock
。以下是 Kiwi 的文档目前提供的内容:
当一个普通的模拟对象收到一个它不期望的选择器或消息模式时,它会引发一个异常。当在模拟上使用存根或接收期望时,预期的消息会自动添加到模拟中。
如果您不关心模拟接收其他消息,并且不希望引发异常,则使用空模拟(也称为空对象)。
这种差异会在什么样的情况下发挥作用?
Null 模拟具有响应发送给它们的每条可能消息的好功能,这意味着您无需手动设置将在该模拟上调用的每个方法。常规模拟没有这个,如果您将它们作为依赖项注入,则需要准备它们。
大多数情况下,null mock
如果某个方法被调用,您通常会感兴趣,因为无论如何您都在其他测试中在模拟上测试其他方法。
这带来了优势和劣势:
null mocks
可能会隐藏细微的错误,因为您可能忘记测试由“其他”方法之一触发的极端情况null mocks
开发得更快,因为您不必跟踪测试方法调用的每个方法,这也不好,因为您在测试和代码之间建立了牢固的关系,这使得重构更加困难