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

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

我阅读了文档,但仍感到困惑,并有两个问题:
  • OCMClassMock(cls)OCMStrictClassMock(cls)之间到底有什么区别?
  • 什么时候应该使用OCMClassMock(cls)?什么时候应该使用OCMStrictClassMock(cls)

  • ====更新====

    我可以理解为OCMClassMock(cls)是部分模拟,当对其调用方法时,真正的实现仍在运行,而OCMStrictClassMock(cls)是一个完整的模拟,就像没有真正实现的骨架一样?

    最佳答案

    我可以理解为OCMClassMock(cls)是真正的部分模拟
    调用方法对其执行时,实现仍在运行

    这描述了OCMPartialMock

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

    这是OCMClassMock的准确的一般描述。

    从您链接的参考中:

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

    因此,正如您所说,OCMClassMock就像实例的骨架,在其中仅存根需要使用的方法。 OCMClassMockOCMStrictClassMock之间的区别在于,对于尚未显式存根的方法,前者将简单地返回nil,而如果您对尚未显式存根的方法进行调用,则后者将引发异常。

    09-13 12:35