2015-01-30 6 views
0

거대한 프로젝트에서 단위 테스트를 설정하려고합니다. 문제는 그 다음 추적과 부분적인 모의 충돌이라는 일부 ViewControllers :OCMock 하위 클래스 전용 부분 모의

error: -[EspionageViewControllerTests testFillEspionageTabInfo] : failed: caught "NSInternalInconsistencyException", "-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "EspionageViewController" nib but the view outlet was not set." 
    0 CoreFoundation      0x0000000111264f35 __exceptionPreprocess + 165 
     1 libobjc.A.dylib      0x0000000110efdbb7 objc_exception_throw + 45 
     2 CoreFoundation      0x0000000111264e6d +[NSException raise:format:] + 205 
     3 UIKit        0x000000010f68805f -[UIViewController _loadViewFromNibNamed:bundle:] + 441 
     4 UIKit        0x000000010f688588 -[UIViewController loadView] + 109 
     5 UIKit        0x000000010f6887f9 -[UIViewController loadViewIfRequired] + 75 
     6 UIKit        0x000000010f688c8e -[UIViewController view] + 27 
     7 AppName     0x000000010c07c388 -[IOViewController setTopBarView:] + 1144 

내가 setTopBarView 문제, 나는 다음과 같은 만든 특히 장소가 있었다 알고있는 것처럼 : 그래서

[viewElement setFrame:CGRectMake(viewElement.frame.origin.x, self.view.bounds.origin.y - viewElement.frame.size.height , viewElement.frame.size.width, viewElement.frame.size.height)]; 

자기를 .view 호출로이 충돌이 발생합니다. 내 질문은 어떻게이 상황을 피할 수 있습니다 - 특히 내 EspionageViewController setTopBarView 정의 된 다른 ViewController 하위 클래스입니다. EspionageVC에서 OCMPartialMock을 사용해야합니다. 그렇지 않으면 메소드를 검사 할 수 없지만 수퍼 클래스 (및 메소드)는 이러한 충돌을 방지하기 위해 완전히 조롱되어야합니다. 어떤 도움을 받을지 모르겠다.

+0

나는 당신이 무엇을 요구하고 있는지 이해하지 못합니다. 부분 모의 객체를 사용하면 부모 클래스에서 메소드를 조롱 할 수 있습니다. 실패의 원인이되는 테스트 코드의 작은 예제를 공유 한 경우 도움이 될 수 있습니다. –

답변

1

죄송합니다. 내 자신의 질문에 대한 늦은 답변입니다. 문제는 꽤 단순한 것으로 판명되었습니다. 나는 다음과 같은 방법을의 ViewController 조롱했다 :

물론 잘못하고 (난 정말 내 XIB 파일을로드하지 않았기 때문에) 충돌 로그는 내보기 콘센트가 설정되지 않았 음을 정확했다
id mock = OCMPartialMock([MyViewController new]); 

. 그래서 내가해야 할 일은 지정된 초기화자를 가지고 VC를 만드는 것입니다 (따라서 xib를로드하는 것입니다) :

id mock = OCMPartialMock([[MyViewController alloc] initWithNibName:NSStringFromSelector([MyViewController class]) bundle:nil]); 
관련 문제