8

I am trying to use OCMock for testing my app. But I am confused where should we use expect and where to use stub? Can anyone help please?

4

1 回答 1

18

基本的区别是:你必须发生的事情,以及expect可能发生的事情stub

模拟对象失败有两种方式:调用意外/未存根的方法,或者未调用预期的方法。

  1. 意外的调用。当一个模拟对象接收到一个既不是存根也不是预期的消息时,它会立即抛出一个异常并且您的测试失败。
  2. 预期的调用。当您调用verify模拟时(通常在测试结束时),它会检查以确保实际调用了您期望的所有方法。如果没有,您的测试将失败。

有几种类型的模拟可以改变这种行为:好的模拟和部分模拟。好的模拟可以防止你不得不存根方法——基本上它们会让意外的调用发生。部分模拟是一种拦截发送到实际对象的消息的方法。您期望的任何消息或部分模拟的存根都将发送到模拟对象。所有其他消息都发送到实际对象。对于 nice mocks 和 partial mocks,您不会因意外调用而导致测试失败(上面的规则 #1)。

于 2012-06-19T16:37:48.137 回答