我正在尝试编写单元测试,一旦选择了行,就会显示视图控制器。单元格声明不起作用,因为由于某种原因,您无法在tableview上调用didSelectRow。另外,我得到一个错误,表示VC是零:
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)
}
感谢。
答案 0 :(得分:1)
为了对此进行测试,您必须查看演示文稿堆栈(如果您正在呈现视图控制器)或导航堆栈(如果您使用的是导航控制器。
此外,以编程方式选择表视图索引路径将不使其调用它的委托的didSelectRow方法。
不要费心测试以查看选择特定行是否导致委托的didSelect方法被调用。相信Apple正确实现了他们的代码。您需要测试的只是表视图具有正确的委托,并且当调用didSelect时,它会做正确的事。
也就是说,测试视图控制器操作,特别是呈现和解散或推送和弹出是众所周知的困难和非常缓慢。不要这样做。尽可能多地将代码移动到模型层中,然后测试模型。