0

在模拟已经在 KVO 观察下的对象时,我看到了一个异常。这是一个显示问题的简化示例:

[sourceObject addObserver:destinationObject forKeyPath:@"stringProperty" options:NSKeyValueObservingOptionNew context:nil];
[OCMockObject partialMockForObject:sourceObject];
[sourceObject removeObserver:destinationObject forKeyPath:@"stringProperty"];

当调用“-removeObserver:forKeyPath:”时,我得到一个我当前没有观察对象的异常。如果我在调用“-removeObserver:forKeyPath:”之前在模拟上调用“-stopMocking”,一切正常。

4

1 回答 1

0

OCMock 和 KVO 都是动态子类对象,因此它们不能一起正常工作。唯一真正的解决方案是以不必模拟被观察对象的方式修改您的测试。在最坏的情况下,您将不得不创建自己的测试子类以在测试时使用。

于 2013-10-21T18:10:08.810 回答