我如何使用 Swift 对 NSFetchedResultsControllerDelegate(controllerWillChangeContent 和 controllerDidChangeContent)进行单元测试
How do I unit test NSFetchedResultsControllerDelegate (controllerWillChangeContent and controllerDidChangeContent) using Swift
我有以下委托,我需要测试 tableView.beginUpdates() 是否被调用。我正在使用 XCTest 和 Swift 3。
您有任何想法或示例代码吗?
extension SomeListController: NSFetchedResultsControllerDelegate {
func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
tableView.beginUpdates()
}
func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
tableView.endUpdates()
}
}
我终于明白了。 endsUpdates 测试几乎是相同的模式。
func test_controllerWillChangeContent_beginsUpdates() {
class MockTableView: UITableView {
var gotCalled: Bool = false
override func beginUpdates() {
gotCalled = true
}
}
let tableView: MockTableView = MockTableView()
controller.tableView = tableView
let _ = controller.view
controller.controllerWillChangeContent(controller.fetchedResultsControler as! NSFetchedResultsController<NSFetchRequestResult>)
XCTAssertTrue(tableView.gotCalled)
}
我有以下委托,我需要测试 tableView.beginUpdates() 是否被调用。我正在使用 XCTest 和 Swift 3。 您有任何想法或示例代码吗?
extension SomeListController: NSFetchedResultsControllerDelegate {
func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
tableView.beginUpdates()
}
func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) {
tableView.endUpdates()
}
}
我终于明白了。 endsUpdates 测试几乎是相同的模式。
func test_controllerWillChangeContent_beginsUpdates() {
class MockTableView: UITableView {
var gotCalled: Bool = false
override func beginUpdates() {
gotCalled = true
}
}
let tableView: MockTableView = MockTableView()
controller.tableView = tableView
let _ = controller.view
controller.controllerWillChangeContent(controller.fetchedResultsControler as! NSFetchedResultsController<NSFetchRequestResult>)
XCTAssertTrue(tableView.gotCalled)
}