是否可以使用 OCMock 验证 intra-class 行为

Is it possible to verify intra-class behavior with OCMock

鉴于这个简单 class

@implementation ExampleClass

- (void)doStuff
{
  [self doOtherStuff];
}

- (void)doOtherStuff
{
  // something happens here
}

@end

是否可以测试 class 它自己的一个方法调用另一个方法的行为?例如,在上面的示例中,我可以使用 OCMock 来验证调用了 doOtherStuff 吗?我尝试了以下方法:

id mock = OCMClassMock([ExampleClass class]);
[mock doStuff];
OCMVerify([mock doOtherStuff]);

但它实际上根本没有调用对 doStuff 的调用,因为它是一个 class 模拟。这是否只有部分模拟才有可能——如果是这样,ExampleClass 的另一种设计是不需要部分模拟的?请耐心等待 - 单元测试和模拟新手:)

这就是部分模拟的用途。创建 ExampleClass 的实例,然后为该实例创建部分模拟。使用该部分模拟,您现在可以验证该实例上的 and/or 存根方法,例如验证是否调用了 doOtherStuff