次のようにモックオブザーバーをセットアップします。
id quartileObserverMock = [OCMockObject observerMock];
[[NSNotificationCenter defaultCenter] addMockObserver:quartileObserverMock
name:kVPAdPlayerDidReachQuartileNotification
object:self.adPlayer];
[[quartileObserverMock expect]
notificationWithName:kVPAdPlayerDidReachQuartileNotification
object:self.adPlayer
userInfo:@{@"quartile" : @(VPAdPlayerFirstQuartile), @"trackingEvent" : VPCreativeTrackingEventFirstQuartile}];
単体テストが実行されます。しかし、通知が投稿されたときに誤った EXC_BAD_ACCESS エラーが発生します。
すなわち
[[NSNotificationCenter defaultCenter]
postNotificationName:kVPAdPlayerDidReachQuartileNotification
object:self.adPlayer
userInfo:@{@"quartile" : @(quartile), @"trackingEvent" : trackingEvent}];
オブザーバーモック コードをコメント アウトすると、毎回テストが正常に実行されます。
コードを元に戻すと、おそらく 2.5 回に 1 回、postNotiicaitonName:object:userInfo で偽のクラッシュが発生します。
誰でもアイデアはありますか?