2016-12-17 5 views
1

を使用してIユニットテストNSFetchedResultsControllerDelegate(controllerWillChangeContentとcontrollerDidChangeContentは)私は、次のデリゲートを持っていると私はtableView.beginUpdates()が呼ばれましたことをテストする必要があります。私はあなたが任意のアイデアやサンプルコードをお持ちですXCTestとスウィフト3 を使用していますか?方法は、スウィフト

extension SomeListController: NSFetchedResultsControllerDelegate { 



func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) { 

    tableView.beginUpdates() 

} 



func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>) { 

    tableView.endUpdates() 

} 

}

答えて

0

私は実際に最終的にそれを考え出しました。 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) 

} 
関連する問題