【发布时间】:2013-07-13 14:39:03
【问题描述】:
我正在测试 ViewController 中的一些代码(某些控件根据某些 UISwitches 的状态而处于活动状态)并决定使用 Kiwi,因为我们正在将它用于其他一些低级逻辑测试。
我的期望是运行这样的测试:
__block AViewController *aVC;
it(@"(tokenTextField) should be hidden if the token switch is set to off", ^{
lvC.useTokenSwitch.on = false;
[[theValue(aVC.tokenTextField.hidden) should] equal:theValue(YES)];
});
我的问题在于 AViewController 的初始化。如果我这样做了:
aVC = [[AViewController alloc] initWithNibName:@"aViewController" bundle:nil];
我会得到一个没有初始化任何控件的“AViewController”,所以我必须手动初始化它们。
所以我尝试过这样获取 AViewController:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
aVC = [storyboard instantiateViewControllerWithIdentifier:@"AViewController"];
但这会导致错误消息:
NSInvalidArgumentException“在捆绑包 NSBundle 中找不到名为“MainStoryboard”的故事板/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/Developer/usr/bin >(加载)“提出
我已将 MainStoryboard 包含在我的测试目标中,并将其包含在“构建阶段”->“复制捆绑资源”中,但仍然没有。
所以我想知道是否可以从 Kiwi 测试目标中的情节提要中实例化 ViewController? (因为我在任何地方都没有看到任何例子)。
我的方法错了吗,我应该嘲笑 ViewController?
我是否遗漏了一些要包含在测试目标中的内容?
【问题讨论】:
-
我能够以这种方式实例化故事板。实际上,我不在测试目标或 Copy Bundle Resources 构建阶段包含故事板,但我只是尝试了两种方式,任何一种方式都适合我。
-
谢谢,在玩弄之后,我成功地实例化了它。但是现在我被卡住了,然后我执行: [aVC performSelectorOnMainThread:@selector(loadView) withObject:nil waitUntilDone:YES];因为它导致:NSInvalidArgumentException "-[__NSCFType pointSize]:unrecognized selector sent to instance 0x21f4690"
标签: ios uiviewcontroller storyboard kiwi