【发布时间】:2020-11-24 11:35:12
【问题描述】:
我是 XCTest 的新手,我已经在模型、视图、控制器中构建了我的代码
因此控制器将从模型中获取数据,一旦获取数据,控制器将更新视图。 所以我有我的控制器和视图如下
控制器:
func loadData() {
Model.provideData { response in
if response != nil {
view.refresh()
}
}
}
查看:
func refresh() {
isViewLoaded = true
}
这是我的 XCTest
func testLoadData() {
let sut = Controller()
let mockView = View()
mockView.setController(controller: sut)
controller.loadData()
/** HERE is the problem, because it is a ASYNC call, i need to wait for the flag is set **/
XCTAssertTrue(mockView.isViewLoaded, "isViewLoaded equals to true")
}
我知道我可以
let expectation = expectation(description: "wait for isViewLoaded set to true")
但是我应该把expectation.fulfill()放在哪里?
waitForExpectation(timeout: 5, handler: nil)
感谢任何帮助。谢谢
【问题讨论】:
-
您需要模拟控制器,以便您的测试获得完成处理程序。或者让你的模型可测试。
-
我的目标是测试控制器,我已经可以测试我的模型了
标签: swift xctest xctestcase xctestexpectation