Swift单元测试 - 等待viewDidLoad

时间:2017-02-01 13:27:33

标签: swift xcode

我是Swift单元测试的新手。现在我想测试我的viewController。在viewDidLoad中,我有一个异步调用。因此,如果我想测试我的控制器,如果数据加载正确,数据没有加载。我已经读过,我必须构建一个XCTestExpectation。

所以我得到的信息来自这个问题: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

如果我想建立一个期望,我必须等待这一部分。但这部分不是一个功能。所以我不知道如何在装载后告诉我的期望。

1 个答案:

答案 0 :(得分:0)

这可能更像是一个意见/设计答案,但我强烈建议您完全单独测试ViewController和模型。

E.g。当您测试VC时,在测试中手动设置数据,然后单独进行测试以确保您的模型和任何网络/异步调用正常运行。