gpt4 book ai didi

ios - 使用 OCMockito 测试 Storyboard的最佳方式

转载 作者:行者123 更新时间:2023-11-29 10:42:04 25 4
gpt4 key购买 nike

我正在尝试测试基于 Storyboard的应用程序。该场景是一个导航 Controller ,里面有一个 View Controller 。测试是执行 segue 将 View Controller 设置为目标 Controller (推送 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:

最佳答案

谁调用了 -prepareForSegue:sender:? UIKit 可以。通过尝试测试它,您正在测试 UIKit——这是不必要的。在处理框架(即回调给你的东西)时,基本模式是:

  • 确保您正确调用框架。
  • 假设框架正确回调。通过让您的测试直接调用框架将调用的方法来假装这发生了。

关于ios - 使用 OCMockito 测试 Storyboard的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24056528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com