【问题标题】:How can I test that a view controller has been presented?如何测试视图控制器是否已呈现?
【发布时间】:2017-02-13 22:13:01
【问题描述】:

我正在尝试编写一个单元测试,一旦选择了一行,就会显示一个视图控制器。单元格声明不起作用,因为由于某种原因您不能在 tableview 上调用 didSelectRow。另外,我得到一个错误,presentVC is nil:

func testDidSelectNewsReportCalledWhenNewsReportSelected() {
    var cell = tableView.didSelectRow(at: IndexPath(row: 0, section: 3), animated: false) //This line doesn't work

   let presentedVC = controller.presentedViewController?.view
    let newsReportVC = UIStoryboard(name:"News", bundle: Bundle.init(for: NewsViewController.self)).instantiateViewController(withIdentifier: "NewsReport") as! NewsReportViewController
    XCTAssertEqual(newsReportVC, presentedVC)
}

谢谢。

【问题讨论】:

标签: ios swift


【解决方案1】:

为了对此进行测试,您必须查看表示堆栈(如果您正在展示视图控制器)或导航堆栈(如果您正在使用导航控制器。

此外,以编程方式选择表视图索引路径不会导致它调用它的委托的 didSelectRow 方法。

不要费心测试选择特定行是否会导致委托的 didSelect 方法被调用。相信 Apple 正确地实现了他们的代码。您只需要测试表格视图是否有正确的委托,并且当 didSelect 被调用时,它会做正确的事情。

也就是说,测试视图控制器的操作,尤其是呈现和关闭或推送和弹出是出了名的困难和非常缓慢。不要这样做。将尽可能多的代码移入模型层,然后测试您的模型。

【讨论】:

    猜你喜欢
    • 2021-06-18
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多