Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 单元测试';s属性_Ios_Objective C_Unit Testing_Ios6_Gh Unit - Fatal编程技术网

Ios 单元测试';s属性

Ios 单元测试';s属性,ios,objective-c,unit-testing,ios6,gh-unit,Ios,Objective C,Unit Testing,Ios6,Gh Unit,我使用GHUnit。我想测试IBOutlet的属性,如ishiden,委托等 我尝试了以下代码来测试myView是否隐藏: - (void)testViewDidLoad { // Call view on viewcontroller which will load the view if not loaded [testClass view]; // Tests testClass.myView.hidden = YES; if (testClas

我使用
GHUnit
。我想测试
IBOutlet
的属性,如
ishiden
委托

我尝试了以下代码来测试
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");
    }
}
这总是记录
未隐藏
,而就在记录之前,我将其设置为
隐藏=是

为什么会这样

要测试
IBOutlet
delegate
属性,我在下面的行中尝试了:

GHAssertNotNil(testClass.textField.delegate, @"delegate is nil.");
它失败的原因是:((testClass.textField.delegate)!=nil)应该为FALSE。

怎么了

编辑: 尝试了以下不起作用的代码

[testClass view];

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

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

这是因为interface builder上的IBTextField无法找到已定义的textfield属性

也就是说,您需要从interface builder将其附加或将textfield连接到其属性


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

在测试
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);

我还建议(用一个单独的方法)测试视图控制器是否成功实例化。如果有必要,我也会将控制器初始化移到您的设置方法中。

您是否有一个测试来验证
testClass.myView
是否为零?@FlorianMielke您是对的<代码>我的视图为零。但是当我调用
[testClass view],是否应该初始化它?或者有没有初始化的方法?主要的一点是它是
IBOutlet
,因此它是
弱的
属性。您是使用XIB还是脚本作为接口?@FlorianMielke脚本。尝试过了。不起作用。我已经发布了我尝试过的代码。