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 に答える