是否可以使用OCMock验证类内行为

时间:2016-06-30 19:24:31

标签: ios ocmock

鉴于这个简单的课程

@implementation ExampleClass

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

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

@end

是否有可能测试该类的行为,它自己的一个方法调用另一个?例如,在上面的例子中我可以使用OCMock来验证doOtherStuff被调用吗?我尝试过以下方法:

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

但它实际上并没有调用 doStuff ,因为它是一个类模拟。这只能用部分模拟 - 如果是这样,那么ExampleClass的另一种设计是什么,不需要部分模拟?忍受我 - 在这里进行单元测试和嘲笑的新手:)

1 个答案:

答案 0 :(得分:1)

这是部分嘲笑的目的。创建ExampleClass的实例,然后为该实例创建部分模拟。使用该部分模拟,您现在可以在该实例上验证和/或存根方法,例如验证是否已调用doOtherStuff