gpt4 book ai didi

ios - 未调用单元测试 Storyboard viewDidLoad

转载 作者:行者123 更新时间:2023-11-29 12:26:50 25 4
gpt4 key购买 nike

所以有几篇关于如何加载包含用于单元测试的 nib 的 Storyboard 的文章浮出水面,它看起来像这样

MyViewController vc;

- (void)setUp
{
[super setUp];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
self.vc = [storyboard instantiateViewControllerWithIdentifier:@"main"];
[self.vc performSelectorOnMainThread:@selector(loadView) withObject:nil waitUntilDone:YES];
}

但是,当我执行此操作时,该类的 viewDidLoad 方法从未被调用,我必须像这样手动执行

- (void)setUp
{
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MediaSelectionSuite" bundle:[NSBundle mainBundle]];
SUT = [storyboard instantiateViewControllerWithIdentifier:@"Gallery"];
[SUT performSelectorOnMainThread:NSSelectorFromString(@"loadView") withObject:nil waitUntilDone:YES];
[SUT viewDidLoad];
}

如你所见,我必须为要调用的 Controller 的 [SUT viewDidLoad]; 添加 viewDidLoad...它有效,我不应该太担心,因为它是一套测试,但我对此有疑虑,因为你应该很少需要手动调用它,instantiateViewControllerWithIdentifier: 或调用 loadView 的选择器不应该确保调用 viewDidLoad 吗?

更新

经过一些实验后,似乎只有已设置为 Storyboard初始 UIViewControllerUIViewControllerviewDidLoad 上调用了 instantiateViewControllerWithIdentifier: 方法

最佳答案

我最近遇到了和你一样的情况,并找到了我的解决方案。您是正确的 viewDidLoad() 不会自动调用。其实可以调用view controller的view属性来触发viewDidLoad()。有关更多信息,请查看 View Controller TDD

关于ios - 未调用单元测试 Storyboard viewDidLoad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28823352/

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