2012-12-10 4 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는 모두 개체를 동적으로 하위 클래스로 분류하므로 제대로 작동하지 않습니다. 유일한 실제 해결책은 관찰 중에 객체를 조롱 할 필요가 없도록 테스트를 수정하는 것입니다. 최악의 경우 테스트하는 동안 자신 만의 테스트 서브 클래스를 만들어야한다.