【发布时间】:2017-02-21 16:38:38
【问题描述】:
所以我有一个带有 UITableView 的故事板。有一个原型单元,其中一个 show segue 连接到另一个 UIViewController
- 小区标识符是“CellOne”
- segues 没有标识符
- 我的类是 tableView 的 dataSource 和 delegate。
类看起来像这样:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return tableView.dequeueReusableCell(withIdentifier: "CellOne", for: indexPath)
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("Selected the row")
}
}
通常我会通过调配准备 segue 来捕获目标 ViewController 以及我需要的任何其他东西来测试它,但以编程方式调用 tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 不会触发准备 segue 的代码。
是否可以在不添加 segue 标识符并从 prepareForSegue 显式调用它的情况下测试选择 Cell One 会触发故事板 segue?
【问题讨论】:
-
嘿,你的问题不清楚!为什么要测试 segue 是否由 didSelectRow 触发?这很明显,因为你在那个 VC 中只有一个 segue。那么,您的问题是检测哪些 tableviewcell 触发器 prepareforSegue ?
-
@JenJose 这是一个人为的例子,真正的项目有更多的单元格,自定义单元格等......
-
我也遇到了同样的问题,你找到解决办法了吗?
-
@JordiPuigdellívol,更新了我的答案,包括我用来解决这个问题的一些方法。
-
感谢您的回答,我一直在深入研究它,正如您所说,没有“好的”方法来测试它,所以我选择了单元格引用并在测试自己,问题是你无法测试单元格是否有连接的动作,但至少是干净的
标签: ios swift unit-testing