对IBOutlet的属性进行单元测试



我使用GHUnit。我想测试IBOutlet的属性,如isHiddendelegate等。

我尝试了以下代码来测试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

为什么会这样?

为了测试IBOutletdelegate属性,我尝试了以下行:

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中包含的视图时,请确保已将情节提要文件添加到测试目标中。

我还建议你进行一个测试,验证你的故事板是否成功初始化,如下所示:

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

编辑

你首先必须实例化你想从故事板测试的视图控制器,然后你可以测试你的出口:

UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"ViewControllerIdentifier"];
[controller view];
GHAssertTrue(controller.myView.isHidden, nil);

我还建议测试(在一个单独的方法中)您的视图控制器是否成功实例化。如果需要的话,我还会将控制器初始化转移到您的setUp方法中。

这是因为接口生成器上的IBTextField找不到已定义的文本字段属性。

也就是说,您需要附加它,或者从接口生成器将文本字段连接到它的属性。

(或者可能是因为您的testClass无法指向或访问textField。)

相关内容

  • 没有找到相关文章

最新更新