我想用 OCMock 测试一些代码。
代码的内部是在我提供给代码的模拟对象上调用 [NSObject isKindOfClass]
,如下所示:
if ([object isKindOfClass:[FancyClass class]]) { ...}
但是,当我提供一个像这样创建的基于 OCMockObject 的模拟时:
mock = [OCMockObject mockForClass:[FancyClass class]];
它似乎没有通过 isKindOfClass
测试。
有什么建议吗?
最佳答案
一般规则是,如果您正在调用 isKindOfClass:
并且您没有传递 plist 类之一(例如 NSString 或 NSNumber),您做错了。
如果该方法根据其参数是哪个类做两个或更多不同的事情,则将其分解为多个方法,并分别测试每个方法。
如果该方法只做一件事,但必须根据它是哪个类与对象进行不同的交互,那么:
- 制定协议(protocol)。 (Obj-C 中的协议(protocol)在其他一些 OO 语言中称为“接口(interface)”,例如 Java。)
- 使许多类都符合协议(protocol)。如有必要,使用类别从外部添加必要的方法。
- 让被测方法检查是否符合协议(protocol),代替当前的
isKindOfClass:
检查。 - 让被测方法使用协议(protocol)中的方法。
关于ios - 如何将 OCMock 对象与调用 isKindOfClass 的代码一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/490148/