如何为此成功编写测试用例"成功"场景?
if ([tblView.delegate respondsToSelector:@selector(tableView:viewForHeaderInSection:)]) {
...
}else{
...
}
我试过在swift中创建下面的模拟委托:
class MockTableViewDelegate:NSObject, UITableViewDelegate {
@objc func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 30
}
// MARK: Delegates
@objc func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return UIView()
}
}
代码:
mockTableView.delegate=MockTableViewDelegate()
print("delegate===\(mockTableView.delegate)")
它打印为零。我为数据源尝试了相同的模型,它返回数据源obj。为什么委托回归为零?以及如何测试这种情况?
答案 0 :(得分:1)
代表通常是弱引用。如果您首先将MockTableViewDelegate
分配给局部变量,则在print
中使用时,它应该仍然存在。请尝试以下方法:
let delegate = MockTableViewDelegate()
mockTableView.delegate = delegate
print("delegate===\(mockTableView.delegate)")
print(delegate)
需要第四行来保持第三行的对象生效。
答案 1 :(得分:0)
最后我发现这是iOS运行时中的一个错误。解决这个问题的一种方法是使用OCMock,但它不适用于Swift。所以我现在用Objective-c写的。
Promise