是否可以拥有一个类的实际对象并且只模拟该类中的一个方法而不是模拟整个对象?
我希望对象的行为与真实对象 100% 相同,除了 1 种方法。
前任:
MyObject *object = [[MyObject alloc] init];
[[[object stub] andReturn:@"some_string"] getMyString];
是否可以拥有一个类的实际对象并且只模拟该类中的一个方法而不是模拟整个对象?
我希望对象的行为与真实对象 100% 相同,除了 1 种方法。
前任:
MyObject *object = [[MyObject alloc] init];
[[[object stub] andReturn:@"some_string"] getMyString];
是的,这就是部分模拟的用途。
部分模拟
id aMock = [OCMockObject partialMockForObject:anObject]
创建一个可以像 anObject 一样使用的模拟对象。当一个没有被存根的方法被调用时,它将被转发给一个对象。当使用对 anObject 的引用而不是 mock 调用存根方法时,它仍将由 mock 处理。
请注意,目前不能为免费桥接类的实例创建部分模拟,例如 NSString。
您可以在文档中看到: 10.3 无法为某些特殊类创建部分模拟