当此调用包装在另一个方法中时,有没有办法等待异步调用完成?
class Owner{
let dataManager = MockDataManager()
var data: String? = nil
func refresh() {
Task {
self.data = await dataManager.fetchData()
}
}
}
class MockDataManager {
var testData: String = "test"
func fetchData() async -> String {
testData
}
}
class OwnerTests: SKTestCase {
private var owner = Owner()
func testRefresh() {
owner.refresh()
XCTAssertEqual(owner.data, "test") // fail. the value is still nil
}
}
Run Code Online (Sandbox Code Playgroud)
通过回调,如果引擎盖下的所有内容都被同步调用替换,则测试可以正常工作,但这里看起来我缺少一个等待更改的操作owner.data