我正在为委托对象设置一个模拟对象,以检查当 URL 为 nil 时,以 nil 作为参数调用委托方法。
当FileDownloadOperation
行为符合预期时,测试通过,这很好。
当FileDownloadOperation
不调用委托方法时,测试会按预期失败。
但是,当FileDownloadOperation
调用委托方法时nil
,不是失败,而是失败,测试崩溃并且没有其他测试被执行,因为OCMock
throws :
'NSInternalInconsistencyException' 原因:'OCMockObject [FileDownloadOperationTest]:调用了意外的方法:数据:<> 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];
}
这是预期的行为吗?还是我做错了什么?谢谢 !