您好我实际上是使用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];
}
}
答案 0 :(得分:0)
您的代码片段中不清楚您的测试session
是否与您在_session
中修改的tableViewController的instanceVariable prepareForSegue:sender:
相同。
也许你的测试必须检查类似的东西:
assertThat(sut.session.selectedQuest, is(quest));