ストーリーボードに基づいてアプリケーションをテストしようとしています。シナリオは、View Controller を内部に持つ Navigation Controller です。テストは、セグエを実行すると、ビュー コントローラーが宛先コントローラーとして設定されることです (プッシュ セグエ)。私は 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: