URL이 nil이면 매개 변수로 nil을 사용하여 대리자 메서드가 호출되는지 확인하기 위해 대리자 개체의 모의 개체를 설정합니다.OCMock은 매개 변수가 예상치 못한 경우 NSInternalInconsistencyException을 throw합니다.
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];
}
전무는 예상되는 행동인가? 아니면 내가 잘못하고있는거야? 덕분에 !
이 아이폰 OS 5.0 시뮬레이터에 해결되었다, 지금 OCMock는 단순히 테스트 실패를보고합니다. – yonix