2017-02-01 7 views
2

私はSwiftのユニットテストが初めてです。今私はviewControllerをテストしたかったのです。私はviewDidLoadで非同期呼び出しがあります。データが正しくロードされた場合にコントローラをテストしたい場合、データがロードされていないようにします。私はすでにXCTestExpectationでビルドする必要があることを読んでいます。スウィフトユニットテスト - viewDidLoadを待つ

だから私は持っている情報は、私はこの質問から得た:私は実装する方法がわからない、そこから例があるXCTest Unit Test data response not set in test after viewDidLoad

答えを。私のテストクラスは次のようになります。

import XCTest 
@testable import apirequest 

class SearchedForViewControllerTests: XCTestCase { 
    var vc: SearchedForViewController! 

    override func setUp() { 
     super.setUp() 

     let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main) 
     vc = storyboard.instantiateViewController(withIdentifier: "SearchedForViewController") as! SearchedForViewController 

     vc.passedString = "garten" 
     let _ = vc.view 
    } 

    func testArticlesShwon() { 
     print(vc.tableView.numberOfRows(inSection: 0)) 
    }  
} 

私は自分のコードに見えるのであればのviewDidLoadの一部は、私が期待して構築したい場合は、私はこれを待つ必要が

let _ = vc.view 

に起こります部。しかし、その部分は機能ではありません。だから私はどのようにロード後に達成するために私の期待を伝えることができたか分からない。

答えて

0

これはもっと意見/設計の答えかもしれませんが、あなたのViewControllerとモデルを完全に別々にテストすることを強くお勧めします。

など。 VCをテストするときは、テストでデータを手動で設定し、モデルとネットワーク/非同期コールが正しく機能することを確認するためのテストを個別に行います。