1
我爲一個委託對象設置了一個模擬對象,以檢查URL何時爲零,委託方法以nil作爲參數調用。當參數不是預期的參數時,OCMock拋出NSInternalInconsistencyException
當FileDownloadOperation
表現符合預期時,測試通過,這很好。
當FileDownloadOperation
未調用委託方法時,測試將按預期失敗。
但當FileDownloadOperation
調用比nil
別的東西的委託方法,而不是失敗,測試崩潰並沒有其他的測試執行,因爲OCMock
拋出:
「NSInternalInconsistencyException」的原因:「OCMockObject [FileDownloadOperationTest]:意外的方法調用:數據:<> forURL:無
-(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];
}
它是預期的行爲?還是我做錯了什麼? 謝謝!
這是在安裝iOS 5.0模擬器解決,現在OCMock只是報告測試失敗。 – yonix 2011-11-10 11:50:32