2013-06-12 8 views
0

버튼을 누르면 적절한 IBAction이 호출되는지 확인하는 단위 테스트를 작성해야합니다. 내가 테스트를 실행하면버튼을 눌러 올바른 IBAction을 호출하는지 확인하는 단위 테스트를 작성하는 방법은 무엇입니까?

- (void)testWhether_loginBtnTapped_IsCalledAfterUserTapLoginButton 
{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    GoingToLoginViewController *myViewController = [storyboard instantiateViewControllerWithIdentifier:@"GoingToLoginVC"]; 

    id vcMock = [OCMockObject partialMockForObject:myViewController]; 

    [[vcMock expect] loginBtnTapped:[OCMArg any]]; 

    [myViewController.loginBtn sendActionsForControlEvents:UIControlEventTouchUpInside]; 

    [vcMock verify]; 
} 

내가 메시지 로그가 :

error: testWhether_loginBtnTapped_IsCalledAfterUserTapLoginButton (Ticket2Tests) failed: OCPartialMockObject[GoingToLoginViewController]: expected method was not invoked: loginBtnTapped:<OCMAnyConstraint: 0xfd3aeb0> 

을 내가 시뮬레이터에 내 응용 프로그램을 실행할 때 버튼이 적절하고 - (IBAction)loginBtnTapped:(id)sender;했다 작동 여기

내 시험 방법 라는.

내가 뭘 잘못했는데 테스트를 통과하려면 어떻게해야합니까?

+0

[이 코코아 GUI를 어떻게 테스트합니까?] (http://stackoverflow.com/questions/545768/how-do-you-test-your-cocoa-guis)에서이 질문을보십시오. 대답은 코코아 터치에 완벽하게 유효합니다. 예를 들어 [Keep It Functional (KIF) (Keep Keep Functional (KIF))] (https://github.com/square/KIF)과 같이 UI 테스트와의 실제 상호 작용을 테스트 할 수 있습니다. – mAu

답변

2

보기를로드하지 않았으므로 myViewController.loginBtn이 아닌 것으로 의심됩니다. 먼저 뷰를로드하려면 [myViewController view]을 호출 해보십시오.

+0

Christopher Pickslay) 감사합니다. 이제 GoingToLoginViewController * myViewController = [storyboard instantiateViewControllerWithIdentifier : @ "GoingToLoginVC"];와'[myViewController view];를 추가하고 성공을 거두었습니다. 또한 정확도를 높이기 위해 [[vcMock expect] loginBtnTapped : [OCMArg any]];'[[vcMock expect] loginBtnTapped : myViewController.loginBtn];을 변경했습니다. –