我想用OCMock测试一些代码.
代码的内部是调用[NSObject isKindOfClass]
我提供给代码的模拟对象,如下所示:
if ([object isKindOfClass:[FancyClass class]]) { ...}
但是,当我提供如下所示的基于OCMockObject的模拟时:
mock = [OCMockObject mockForClass:[FancyClass class]];
它似乎没有通过isKindOfClass
测试.
有什么建议?
一般规则是,如果你正在调用isKindOfClass:
并且你没有通过其中一个plist类(例如,NSString或NSNumber),那么你就是在做错了.
如果该方法根据其参数所在的类执行两个或更多不同的操作,则将其复制到多个方法中,并分别测试每个方法.
如果该方法只做一件事,但必须根据对象的不同而与对象进行不同的交互,那么:
制定协议.(Obj-C中的协议在其他一些OO语言中称为"接口",例如Java.)
使许多类都符合协议.如有必要,使用类别从外部添加必要的方法.
使被测方法检查是否符合协议,代替当前isKindOfClass:
检查.
使被测方法使用协议中的方法.