OCMClassMock和OCMStrictClassMock

时间:2016-05-24 07:57:48

标签: ios objective-c unit-testing ocmock

我是OCMock 3的新手,我看到有两种方法:

OCMClassMock(cls): creates a new nice class mock object
OCMStrictClassMock(cls): creates a class mock object 

我读了这份文件,但我感到很困惑&有两个问题:

  1. OCMClassMock(cls)OCMStrictClassMock(cls)之间究竟有什么区别?

  2. 我应该何时使用OCMClassMock(cls),何时应使用OCMStrictClassMock(cls)

  3. ==== UPDATE ====

    我可以理解,OCMClassMock(cls)是部分模拟,当它上面的调用方法和OCMStrictClassMock(cls)是一个完整的模拟而没有真正的实现时,真正的实现仍然运行吗?

1 个答案:

答案 0 :(得分:0)

  

我可以理解,因为OCMClassMock(cls)部分嘲笑是真实的   当调用方法时它仍然运行

这描述了OCMPartialMock

  

OCMStrictClassMock(cls)是一个完整的模拟,就像没有真实的骨架   执行?

这是OCMClassMock的准确一般说明。

来自您链接的参考:

  

[OCMStrictClassMock]以严格模式创建模拟对象。通过   默认模拟很好,它们返回nil(或正确的默认值)   对于任何调用方法的返回类型)。相反,   严格的模拟会在收到方法时引发异常   未明确预期。

正如您所说,OCMClassMock就像一个实例的骨架,您只需要存根需要使用的方法。 OCMClassMockOCMStrictClassMock之间的区别在于前者只是为一个你没有明确存根的方法返回nil,而后者如果你在它上面调用一个方法就会抛出异常你还没有明确记下来。