2017-02-13 4 views
1

Ich versuche, einen Komponententest zu schreiben, dass ein View-Controller angezeigt wird, sobald eine Zeile ausgewählt ist. Die Zelldeklaration funktioniert nicht, weil Sie didSelectRow aus irgendeinem Grund nicht in der Tabellenansicht aufrufen können. Außerdem bekomme ich einen Fehler, dass presentedVC ist gleich Null:Wie kann ich testen, dass ein View-Controller vorgestellt wurde?

func testDidSelectNewsReportCalledWhenNewsReportSelected() { 
    var cell = tableView.didSelectRow(at: IndexPath(row: 0, section: 3), animated: false) //This line doesn't work 

    let presentedVC = controller.presentedViewController?.view 
    let newsReportVC = UIStoryboard(name:"News", bundle: Bundle.init(for: NewsViewController.self)).instantiateViewController(withIdentifier: "NewsReport") as! NewsReportViewController 
    XCTAssertEqual(newsReportVC, presentedVC) 
} 

Dank.

+1

Legen Sie die TabelleView.delegate = self, und überprüfen Sie diesen Thread, wie Sie didSelectRow implementieren, Sie tun es falsch. http://stackoverflow.com/questions/26740538/swift-uitableview-didselectrowatindexpath-iddeselectrotindexpath-add-re –

Antwort

1

Um dies zu testen, werden Sie bei der Präsentation Stapel aussehen müssen oder die Navigationsstapel (wenn Sie die View-Controller präsentieren) (wenn Sie einen Navigations-Controller verwenden.

auch programmatisch eine Auswahl Tabellenansicht Indexpfad wird nicht weil es seinen Delegierten didSelectRow Methode aufzurufen.

sie Tests nicht die Mühe zu sehen, ob eine bestimmte Zeile der Auswahl der didSelect Methode des Delegierten verursacht genannt werden. Vertrauen, dass Apple ihren Code korrekt implementiert. Alles, was Sie testen müssen, ist, dass die Tabellenansicht den richtigen Delegaten hat und dass, wenn didSelect aufgerufen wird, t Er hat Recht.

Das Testen der View-Controller-Operation, insbesondere das Anzeigen und Löschen von oder Drücken und Stoßen ist bekanntermaßen schwierig und sehr langsam. Tu es nicht. Verschieben Sie so viel Code wie möglich in die Modellschicht und testen Sie Ihre Modelle.

Verwandte Themen