IOS TDD:UITableViewCell选择segue

时间:2013-11-12 20:21:44

标签: ios objective-c uitableview tdd segue

您好我实际上是使用TDD开发应用程序。该应用程序使用故事板。我有一个UITableViewController在单元格选择后执行segue。代码有效,但我对segue的测试总是失败。

Segue和TDD有什么特别之处吗?使用传统的didSelectRowAtIndexPath工作流程。但是我想要使用具有所有好处的故事板。

这是我的TestCode:

    - (void)testThatAfterPerformingSegueForSecondRowTheSessionHasSescondQuestSelected
{
    NSIndexPath *secondQuestPath = [NSIndexPath indexPathForRow:1 inSection:0];
    UITableViewCell *secondCell = [sut tableView:sut.tableView cellForRowAtIndexPath:secondQuestPath];

    [sut performSegueWithIdentifier:kStationsSegueIdentifier sender:secondCell];

    MNVQuest *quest = session.quests[1];

    assertThat(session.selectedQuest, is(quest));
}

这是我的ViewController代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:kStationsSegueIdentifier]) {
        NSIndexPath *selectedIndexPath = [self.tableView indexPathForCell:sender];
        NSLog(@"ROW: %d", selectedIndexPath.row);
        _session.selectedQuest = _session.quests[selectedIndexPath.row];
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码片段中不清楚您的测试session是否与您在_session中修改的tableViewController的instanceVariable prepareForSegue:sender:相同。

也许你的测试必须检查类似的东西:

assertThat(sut.session.selectedQuest, is(quest));