デリゲートオブジェクトのモックオブジェクトを設定して、URLがnilの場合に、パラメーターとしてnilを使用してデリゲートメソッドが呼び出されることを確認しています。
期待どおりに動作する場合はFileDownloadOperation
、テストに合格します。これで問題ありません。
FileDownloadOperation
がデリゲートメソッドを呼び出さない場合、テストは期待どおりに失敗します。
しかしFileDownloadOperation
、デリゲートメソッドを他の何かで呼び出すと、nil
失敗するのではなく、テストがクラッシュし、次のようにOCMock
スローされるため、他のテストは実行されません。
'NSInternalInconsistencyException'理由:'OCMockObject [FileDownloadOperationTest]:呼び出された予期しないメソッド:data:<> forURL:nil
-(void) testNilURL{
// 1. Create an operation
FileDownloadOperation * anOp = [[FileDownloadOperation alloc]init];
// 2. set a nil URL
anOp.URL = nil;
// 3. set a mock delegate
id mockDelegate = [OCMockObject mockForClass:[self class]];
[[mockDelegate expect] data:[OCMArg isNil] forURL:[OCMArg isNil]];
anOp.delegate = mockDelegate;
// 4. launch operation
[anOp main];
// 5. ASSERT mock delegate is called with nil data
STAssertNoThrow([mockDelegate verify], @"Delegate should be called with nil data and nil URL");
[anOp release];
}
期待される動作ですか?または私は何か間違ったことをしていますか?ありがとう !