EKSource *source1 = [[EKSource alloc] init];
EKSource *source2 = [[EKSource alloc] init];
id source1Mock = OCMPartialMock(source1);
[[[source1Mock stub] andReturnValue:@(EKSourceTypeBirthdays)] sourceType];
id source2Mock = OCMPartialMock(source2);
[[[source2Mock stub] andReturnValue:@(EKSourceTypeCalDAV)] sourceType];
NSLog([source1 sourceType]); # Getting EKSourceTypeLocal instead of EKSourceTypeBirthdays
NSLog([source2 sourceType]); # Getting EKSourceTypeCalDAV. Expected behaviour.
我正在尝试部分模拟EKSource类的两个对象,如上所示。模拟source2对象后,source1Mock停止模拟。如何解决这个问题呢 ?我在OCMock 3.4.1中没有注意到此问题。
答案 0 :(得分:0)
您的实现是正确的。 OCMock的3.4.1版中有一个bug。该错误已在版本3.4.3中修复-参见release notes。
我建议使用宏对方法进行存根,因为它们的编写更加直观且易于阅读。
例如OCMock([source1 sourceType]).andReturn(@(EKSourceTypeBirthdays))