我是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
如果我想建立一个期望,我必须等待这一部分。但这部分不是一个功能。所以我不知道如何在装载后告诉我的期望。
答案 0 :(得分:0)
这可能更像是一个意见/设计答案,但我强烈建议您完全单独测试ViewController和模型。
E.g。当您测试VC时,在测试中手动设置数据,然后单独进行测试以确保您的模型和任何网络/异步调用正常运行。