1
스토리 보드를 기반으로 응용 프로그램을 테스트하려고합니다. 시나리오는보기 컨트롤러가있는 내비게이션 컨트롤러입니다. 테스트에서는 segue를 수행하면보기 컨트롤러가 대상 컨트롤러 (push segue)로 설정됩니다. 여기 OCMockito를 사용하고있어 내 테스트입니다 :OCMockito로 스토리 보드를 테스트하는 가장 좋은 방법
MyViewController *mockSut = mock([MyViewController class]);
UINavigationController *nav = mock([UINavigationController class]);
[given(mockSut.navigationController) willReturn:nav];
[mockSut performSegueWithIdentifier:@"mySegue" sender:nil];
MKTArgumentCaptor *segueArgument = [[MKTArgumentCaptor alloc] init];
MKTArgumentCaptor *senderArgument = [[MKTArgumentCaptor alloc] init];
[verify(mockSut) prepareForSegue:[segueArgument capture] sender:[senderArgument capture]];
assertThat([[[segueArgument value] destinationViewController] class], equalTo([MyDestinationViewController class]));
그러나 prepareForSegue:
메소드가 호출되지 않았 음을 뿌려줍니다.
여기에 문제가 있습니까? 어쩌면 performSegueWithIdentifier:
이 비동기 방식으로 prepareForSegue:
을 호출합니까?
후안,상은 실제 물건이어야하며 조롱을 받아서는 안됩니다. mock에 대한 테스트를 작성하는 것은 많은 가치를 가져 오지 않습니다. 그리고 그것이 mock이기 때문에 실제 기능을 호출하지 않습니다. –
검증 할 인수가 mock 객체가 아닌 경우 prepareforsegue가 호출되었는지 확인하는 방법을 모르겠습니다. –