【问题标题】:Kiwi: concrete difference between mock and nullMock?Kiwi:mock 和 nullMock 之间的具体区别?
【发布时间】:2015-04-23 22:50:43
【问题描述】:
我在一个项目中使用 Kiwi,我不太清楚何时使用 mock 和 nullMock。以下是 Kiwi 的文档目前提供的内容:
一个普通的模拟对象在收到一个
它不期望的选择器或消息模式。预期消息
存根或收到期望时自动添加到模拟中
用于模拟。
如果您不关心模拟接收其他消息,并且不希望
要引发的异常,然后使用 null 模拟(也称为 null
对象)。
这种差异会在什么样的情况下发挥作用?
【问题讨论】:
标签:
ios
unit-testing
testing
tdd
kiwi
【解决方案1】:
Null 模拟具有响应发送给它们的所有可能消息的好功能,这意味着您无需手动设置将在该模拟上调用的每个方法。常规模拟没有这个,如果你将它们作为依赖注入,你需要准备它们。
在大多数情况下,您将使用 null mock,因为您通常会在调用某个方法时感兴趣,因为无论如何您正在其他测试中在 mock 上测试其他方法。
这有好处也有坏处:
- 使用
null mocks 的测试可能会隐藏一些细微的错误,因为您可能会忘记测试由“其他”方法之一触发的极端情况
- 使用
null mocks 的测试开发得更快,因为您不必跟踪被测试方法调用的每个方法,这也不好,因为您在测试和代码之间建立了牢固的关系,这使得重构更加困难