Я устанавливаю фиктивный объект для объекта делегата, чтобы проверить, что, когда URL равен nil, метод делегата вызывается с nil в качестве параметров.
Когда FileDownloadOperation
ведет себя как ожидалось,тестовый проход, что нормально.
Когда FileDownloadOperation
не вызывает метод делегата, тест завершается неудачно, как и ожидалось.
Но когда FileDownloadOperation
вызывает метод делегата счто-то другое, чем nil
, вместо сбоя тест завершается сбоем, и никакие другие тесты не выполняются, потому что OCMock
throws:
'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];
}
Это ожидаемое поведение?или я что то не так делаю?спасибо!