测试prepareForSegue是否符合预期的方法

时间:2013-07-24 18:28:34

标签: ios objective-c unit-testing storyboard

我不确定如何在单元测试中执行segue,以便prepareForSegue运行。

尽我所能用单元测试覆盖所有内容,这就是我正在尝试的内容:

- (void)setUp {

    [super setUp];
    _mainVC = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]
                      instantiateViewControllerWithIdentifier:kMainVC];
    _detailsVC = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]
                      instantiateViewControllerWithIdentifier:kDetailsVC];
}

- (void)test_prepareForSegue_will_set_confNumber_on_DetailsVC {

   UIStoryboardSegue *segue = [UIStoryboardSegue segueWithIdentifier:kDetailsSegueId source:_mainVC destination:_detailsVC performHandler:^{
        // do anything here ???
    }];

    [segue perform];
    expect(_detailsVC.textFieldStr).to.equal(@"123456abc");
}

我注意到当我放入断点时,主视图控制器中的prepareForSegue永远不会被击中。

1 个答案:

答案 0 :(得分:2)

DUH。

只需在测试的ViewController上调用prepareForSegue:)

UIStoryboardSegue *segue = [UIStoryboardSegue segueWithIdentifier:kDetailsSegueId source:_mainVC destination:_detailsVC performHandler:^{
        // do nothing here
    }];

[_mainVC prepareForSegue:segue sender:self];
expect(_detailsVC.confNumber).to.equal(@"123456abc");