Аз съм съвсем нов в XCTest, структурирах кода си в Model, View, Controller
Така че контролерът ще вземе данни от модела и след като получи данни, контролерът ще актуализира изгледа. Така че имам моя контролер и гледам както следва
Контролер:
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)
Всяка помощ се оценява. Благодаря