2012-12-10 143 views
0

嘲笑已经在KVO观察下的对象时,我看到一个异常。下面是一个显示问题一个简单的例子:嘲笑观察对象

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

当调用“-removeObserver:forKeyPath:”我知道,我不是当前观察对象的异常。如果我在调用“-removeObserver:forKeyPath:”之前在模拟上调用了“-stopMocking”,那么一切正常。

回答

0

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