私はiOSプロジェクトでユニットテストを行うのにOCMock 3を使用しています。OCMock 3のユニットテストで関数の戻り値をチェックする方法
OCMockはiOS用の素晴らしいユニットテストライブラリと言われていますが、上にリンクしたOCMockドキュメントでは、関数の戻り値をチェックする方法がはっきりしていません。 。 しかし、私は関数の戻り値をスタブする必要はありません、私は実際の戻り値を確認する必要があります。
は例えば、私はユニットテストに私のSchool
クラスの機能をしたい:
@implementation School
...
- (void) checkStudents {
BOOL isOnVacation = [[Coordinator sharedInstance] checkCalendar];
if (!isOnVacation) {
takeLecture();
}
}
@end
私のテストケース:私は[[Coordinator sharedInstance] checkCalendar]
の戻り値をスタブにしたくない
- (void) testCheckStudents {
// create a partially mocked 'Coordinator' instance
id coordinatorMock = [OCMockObject partialMockForObject:[Cooridnator sharedInstance]];
// run the method under test
[schoolToTest checkStudents];
// I want to check not only '[[Coordinator sharedInstance] checkCalendar]' is invoked, but also check its return value is YES. How to check this in OCMock?
OCMVerify([coordinatorMock checkCalendar]);
}
実際の実装を実行します。
[[Coordinator sharedInstance] checkCalendar]
が呼び出されるだけでなく、戻り値がYES
であることを確認したいと思います。 OCMockでこれをチェックするには?
(そのマニュアルでは、私が唯一の関数が呼び出されることを確認します。私はそのドキュメントで何かを逃してください、そこここに&をスタブ関数の戻り値を見ることができますか?)
これが正解です。 'checkStudents'のテストを書くべきです。これはあなたが持っているものです。 'checkCalendar'のための別のテストを書く必要があります。このテストでは、おそらくOCMockはまったく必要ありません。メソッドを呼び出して戻り値のアサーションを作成するだけです。 –