【问题标题】:Unit testing a private property in view controller loaded from the storyboard单元测试从情节提要加载的视图控制器中的私有属性
【发布时间】:2015-03-28 06:08:33
【问题描述】:

我有一个名为 SubMenuViewController 的视图控制器和一个名为 selectionLabel 的标签。视图控制器出现在情节提要中,我正在编写单元测试来测试 SubMenuViewController。

我有一个方法:

- (void)drawerItemSelectedWithIndex:(NSInteger)selectionIndex 
{
    if(selectionIndex == 0)
    {
        self.selectionLabel.text = @"All";
    }
    else
    {
        self.selectionLabel.text = @"Test";
    }
}

我想为此编写单元测试用例。我已经创建了一个扩展。

@interface SubMenuViewControllerTests : XCTestCase
@property(nonatomic)SubMenuViewController *subMenuViewController;

@end

@interface SubMenuViewController()
@property(nonatomic)IBOutlet UILabel *selectionLabel;
@end

这是我写的测试方法:

-(void)testDrawerItemSelectedWithIndex
{
    [self.subMenuViewController drawerItemSelectedWithIndex:0];
    XCTAssert([self.subMenuViewController.selectionLabel.text isEqualToString:@"All" ]);
}

这是测试此方法的正确方法吗,因为我将 self.subMenuViewController.selectionLabel 的值设为 nil。

【问题讨论】:

  • 我已经在setUp中做到了:

标签: ios unit-testing uiviewcontroller uistoryboard private


【解决方案1】:

您需要从情节提要中实例化您的视图控制器,以便正确连接插座。

【讨论】:

  • 我已经在设置中初始化了视图控制器。
  • 您是否已单步执行此代码?你的故事板变量是零吗?在我的视图控制器测试中,我必须为我的主应用程序指定捆绑包才能找到主故事板
  • 我正在 setUp 中初始化 self.subMenuViewController 的实例。我正在做类似 self.subMenuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SubMenuViewController"] 但即使在此之后标签也没有初始化。
猜你喜欢
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多