내가 다음을 수행 OCMock 사용하여 테스트 케이스가 제대로 중지되지 않습니다OCMock : 조롱 프로토콜은
CAAOAuth2AuthenticationManager *oAuth2AuthManager = [[CAAOAuth2AuthenticationManager alloc] init];
id authDelegate = [OCMockObject mockForProtocol:@protocol(CAAAuthenticationDelegate)];
id partialAuthManagerMock = [OCMockObject partialMockForObject:oAuth2AuthManager];
id resultMock = [OCMockObject mockForClass:[CAAOAuth2AuthenticationResult class]];
[[authDelegate reject] didFailWithError:OCMOCK_ANY];
[[[partialAuthManagerMock expect] andForwardToRealObject] authenticateWithResult:OCMOCK_ANY formData:OCMOCK_ANY delegate:authDelegate];
[[partialAuthManagerMock reject] authenticateWithOptions:OCMOCK_ANY delegate:authDelegate];
[[[resultMock expect] andReturnValue:OCMOCK_VALUE(YES) ] isAuthenticated];
[[resultMock reject] refreshToken];
내가 테스트 케이스를 실행, 두 번째 테스트 케이스 (완전히 다른 테스트 클래스와 파일) 내가 두 번째 테스트 케이스의 모든 모의 객체를 사용하지 않는,
2014-02-28 10:11:24.594 otest[37161:303] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'OCMockObject[CAAAuthenticationDelegate]: unexpected method invoked: didReceiveAuthenticationWithResult:OCMockObject[CAAOAuth2AuthenticationResult]
stubbed: didFailWithError:<OCMAnyConstraint: 0xa913fc0>'
을하지만 : 어떤 또한 CAAAuthenticationDelegate 프로토콜을 사용 SIGABRT와 함께 실패합니다. stopMocking
으로 모의를 치우려고했지만 성공하지 못했습니다.
다음 모의 설치는 아무 문제없이 작동합니다 이런 이유
[[authDelegate reject] didFailWithError:OCMOCK_ANY];
[[[partialAuthManagerMock expect] andForwardToRealObject] authenticateWithResult:OCMOCK_ANY formData:OCMOCK_ANY delegate:authDelegate];
[[partialAuthManagerMock expect] authenticateWithOptions:OCMOCK_ANY delegate:authDelegate];
[[[resultMock expect] andReturnValue:OCMOCK_VALUE(NO) ] isAuthenticated];
[[[resultMock expect] andReturn:refreshToken] refreshToken];
은 누군가가 말해 줄래?
예외가 발생했을 때 전체 스택 추적은 무엇입니까? 당신은 어딘가에 메모리에 매달려 매달려 떠났어. 그것은 아마도 여러분의 andForwardToRealObject 일 것입니다. 이것은 테스트가 끝난 후에 메모리에 잠글 수있는 비동기 활동을하는 것입니까? – ImHuntingWabbits