我正在尝试基于故事板测试应用程序。该场景是一个内部带有View Controller的导航控制器。测试是执行segue将视图控制器设置为目标控制器(推送segue)。我正在使用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:
?
答案 0 :(得分:2)
谁致电-prepareForSegue:sender:
? UIKit呢。通过尝试测试,您正在测试UIKit - 这是不必要的。在处理框架(即回调给你的东西)时,基本模式是: