gpt4 book ai didi

ios - 单元测试 IBOutlet 的属性

转载 作者:行者123 更新时间:2023-12-01 19:08:29 26 4
gpt4 key购买 nike

我用 GHUnit .我要测试IBOutlet的属性,例如 isHidden , delegate , ETC。

我尝试了下面的代码来测试 myView被隐藏:

- (void)testViewDidLoad
{
// Call view on viewcontroller which will load the view if not loaded
[testClass view];

// Tests
testClass.myView.hidden = YES;

if (testClass.myView.isHidden) {
GHTestLog(@"Hidden");
}
else {
GHTestLog(@"Not Hidden");
}
}

这总是记录 Not Hidden ,而就在登录之前,我将其设置为 hidden = YES .

为什么是这样?

测试 delegate IBOutlet 的属性(property)我尝试了以下行:
GHAssertNotNil(testClass.textField.delegate, @"delegate is nil.");

它失败了 Reason : ((testClass.textField.delegate) != nil) should be FALSE.
怎么了?

编辑:
尝试下面的代码不起作用。
[testClass view];

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:[NSBundle bundleForClass:[self class]]];
GHAssertNotNil(storyboard, nil);

// Tests
GHAssertTrue(testClass.myView.isHidden, nil); // This fails

最佳答案

在测试 UIStoryboard 中包含的 View 时,请确保您已将 Storyboard 文件添加到测试目标。

我还建议您进行一个测试来验证您的 Storyboard是否已成功初始化,如下所示:

- (void)testStoryboardShouldBeInitialized
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"NameOfStoryboard" bundle:[NSBundle bundleForClass:[self class]]];
STAssertNotNil(storyboard, nil);
}

编辑

您首先必须实例化您想从 Storyboard 中测试的 View Controller ,然后您可以测试您的 socket :
UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"ViewControllerIdentifier"];
[controller view];
GHAssertTrue(controller.myView.isHidden, nil);

我还建议测试(以单独的方法)您的 View Controller 是否已成功实例化。如果有必要,我还将 Controller 初始化移动到您的 setUp 方法中。

关于ios - 单元测试 IBOutlet 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18396010/

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