鉴于这个简单的课程
@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的另一种设计是什么,不需要部分模拟?忍受我 - 在这里进行单元测试和嘲笑的新手:)
答案 0 :(得分:1)
这是部分嘲笑的目的。创建ExampleClass
的实例,然后为该实例创建部分模拟。使用该部分模拟,您现在可以在该实例上验证和/或存根方法,例如验证是否已调用doOtherStuff
。