OCMock期望和存根方法有什么区别?

san*_*ana 7 unit-testing stub expect ocmock

我正在尝试使用OCMock来测试我的应用.但我很困惑,我们应该在哪里使用expect和在哪里使用存根?有人可以帮忙吗?

Chr*_*lay 17

基本的区别是这样的:你expect的事情必须发生,stub事情可能会发生.

模拟对象有两种失败方式:调用意外/未调试方法,或者不调用预期方法.

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

有几种类型的模拟可以改变这种行为:漂亮的模拟和部分模拟.好的模拟会阻止您使用存根方法 - 基本上它们会发生意外调用.部分模拟是拦截发送到实际对象的消息的一种方式.您期望的任何消息或部分模拟的存根将被发送到模拟对象.所有其他消息都将发送到实际对象.对于好的模拟和部分模拟,您不会在意外调用(上面的规则#1)上遇到测试失败.