我想测试我的 init 函数是否按预期工作。Task {} 块内的 init 中有一个异步调用。如何让我的测试等待任务块的结果?
class ViewModel: ObservableObject {
@Published private(set) var result: [Item]
init(fetching: RemoteFetching) {
self.result = []
Task {
do {
let result = try await fetching.fetch()
self.result = result // <- need to do something with @MainActor?
} catch {
print(error)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
测试:
func testFetching() async {
let items = [Item(), Item()]
let fakeFetching = FakeFetching(returnValue: items)
let vm = ViewModel(fetching: FakeFetching())
XCTAssertEqual(vm.result, [])
// wait for fetching, but how?
XCTAssertEqual(vm.result, …Run Code Online (Sandbox Code Playgroud)