ios - 如何覆盖 XCTest 中的 TableView 委托(delegate)

标签 ios swift uitableview delegates xctestcase

如何为这个“成功”场景编写测试用例?

if ([tblView.delegate respondsToSelector:@selector(tableView:viewForHeaderInSection:)]) {
         ...
}else{
         ...
}

我尝试在 swift 中创建以下模拟委托(delegate):

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。为什么委托(delegate)返回零?以及如何测试这种情况?

最佳答案

委托(delegate)通常是弱引用。如果您首先将 MockTableViewDelegate 分配给一个局部变量,它在 print 中使用时应该仍然存在。尝试以下操作:

let delegate = MockTableViewDelegate()
mockTableView.delegate = delegate
print("delegate===\(mockTableView.delegate)")
print(delegate)

第四行是为了让对象在第三行存活。

关于ios - 如何覆盖 XCTest 中的 TableView 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37005533/

相关文章:

xcode - swift - 通过prepareforsegue在2个 View Controller 之间添加值

ios - 快速将 UITableView 添加到 View Controller

ios - iOS 上的 Cordova/PhoneGap UI 响应能力

ios - 添加子 Controller 或 Present 时奇怪的情况在 Storyboard中的 Mapview 上崩溃(添加了示例代码)

ios - 删除列表 Swift UI Xcode 11 中的空行

ios - 为什么我放置在 ScrollView 中的 ImageView 具有扭曲的高度?

ios - 如果我跟踪 iPhone 的 Mac 地址,我有什么缺点?

ios - Swift 使协议(protocol)扩展成为通知观察者

ios - 当再次显示 viewcontroller 时在 uitableviewcell 上渲染 View

ios - UITableView、UISwipeActionsConfiguration、UIContextualAction - pullView 不在 View 层次结构中。这是一个 UIKit 错误