开发者

OCMock throwing NSInternalInconsistencyException when parameters are not the ones expected

I'm setting up a mock object for a delegate object, to check that when the URL is nil, the delegate method is called with nil as parameters.

When the FileDownloadOperation behave as expected,the test pass, which is fine.

When the FileDownloadOperation doesn't call the delegate method, the test fails as expected.

But when the FileDownloadOperation calls the delegate method with something else than nil, instead of failing, the test crashes and no other tests are executed because OCMock throws :

'NSInternalInconsistencyException' reason: 'OCMockObject[FileDownloadOperationTest]: unexpected method invoked: data:<> forURL:nil

  -(void) testNilURL{
      // 1. Create an operation
    开发者_StackOverflow社区  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];
    }

Is it the expected behaviour ? or am I doing something wrong ? thanks !


OCMock throws exceptions to report mismatches, trusting OCUnit to catch and report any exceptions. But due to a bug in the iOS Simulator, unit tests are unable to catch exceptions, and so simply crash.

(I'm currently writing a new mocking framework that works around this problem by not relying on exceptions.)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜