1

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

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

这是我的测试代码:

    - (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];
    }
}
4

1 回答 1

0

从您的代码片段中不清楚您的测试session是否与您_sessionprepareForSegue:sender:.

也许您的测试必须检查以下内容:

assertThat(sut.session.selectedQuest, is(quest));
于 2014-04-20T10:59:28.643 回答