そのため、簡単なテストをまとめて、audioController から周波数値を正しく受け取っていることを確認しようとしています。
私の見解では、ブロック コールバックを設定するために次のような呼び出しを行っています。
- (void) registerVolumeCallback {
NSNumberBlock frequencyCallback = ^(NSNumber *frequency) {
self.currentFrequency = frequency;
};
self.audioController.frequencyCallback = frequencyCallback;
}
私のオーディオ コントローラーでは、周波数を含む nsnumber を使用して周波数コールバック ブロックが呼び出されます。
テストファイルには次のものがあります。
- (void) testFrequencyAudioServiceCallbackActive {
OCMockObject *mockEqualizer = [OCMockObject partialMockForObject:self.testEqualizer];
[[[mockEqualizer stub] andCall:@selector(mockDidUpdateFrequency:)
onObject:self] setCurrentFrequency:[OCMArg any]];
[self.testEqualizer startAnimating];
[ mockEqualizer verify];
}
と:
- (void) mockDidUpdateFrequency: (NSNumber *) frequency {
GHAssertTrue((frequency!= nil), @"Audio Service is messing up");
}
テストイコライザーは、前述のビューのインスタンスです。だから私はここでいくつかのスウィズリングをしようとしています. 問題は、mockDidUpdateFrequency が呼び出されないことです。私は入れてみました:
self.currentFrequency = frequency;
ブロックの外にあり、スウィズリングが発生し、mockDidUpdateFrequency への呼び出しが発生します。私も試しました:
- (void) registerVolumeCallback {
__block UIEqualizer *blockSafeSelf = self;
NSNumberBlock frequencyCallback = ^(NSNumber *frequency) {
blockSafeSelf.currentFrequency = frequency;
};
self.audioController.frequency = frequencyCallback;
}
運がない。私が気付いていないブロックコンテキストで、いくつかの奇妙なインスタンスが進行中です。何が起こっているか知っている人はいますか?