XCTestCases如何实现异步任务依赖?
How to achieve asynchronous task dependency with XCTestCases?
我正在为异步操作编写一些测试用例,其中我有两个需要执行单元测试的操作。
假设我有一些需要调用的登录 web 服务,并且在响应时应该调用另一个配置文件 web 服务。
是否可以在 iOS 中使用单元测试来测试上述场景?
提前致谢。
是的,这实际上很简单,您可以使用 expectations 等待任务完成。
示例:
// Create an expectation for a background download task.
let expectation = XCTestExpectation(description: "Login and fetch profile")
MyApiClient.shared.login(username: username, password: password) { auth in
// check login was successful before continuing
MyApiClient.shared.fetchUserProfile(userId: auth.userId) { profile in
XCTAssertNotNil(profile)
// Fulfill the expectation to indicate that the background task has finished successfully.
expectation.fulfill()
}
}
// Wait until the expectation is fulfilled, with a timeout of 10 seconds.
wait(for: [expectation], timeout: 10.0)
查看来自 Apple 的关于使用期望测试异步操作的资源:https://developer.apple.com/documentation/xctest/asynchronous_tests_and_expectations/testing_asynchronous_operations_with_expectations
我正在为异步操作编写一些测试用例,其中我有两个需要执行单元测试的操作。
假设我有一些需要调用的登录 web 服务,并且在响应时应该调用另一个配置文件 web 服务。
是否可以在 iOS 中使用单元测试来测试上述场景?
提前致谢。
是的,这实际上很简单,您可以使用 expectations 等待任务完成。
示例:
// Create an expectation for a background download task.
let expectation = XCTestExpectation(description: "Login and fetch profile")
MyApiClient.shared.login(username: username, password: password) { auth in
// check login was successful before continuing
MyApiClient.shared.fetchUserProfile(userId: auth.userId) { profile in
XCTAssertNotNil(profile)
// Fulfill the expectation to indicate that the background task has finished successfully.
expectation.fulfill()
}
}
// Wait until the expectation is fulfilled, with a timeout of 10 seconds.
wait(for: [expectation], timeout: 10.0)
查看来自 Apple 的关于使用期望测试异步操作的资源:https://developer.apple.com/documentation/xctest/asynchronous_tests_and_expectations/testing_asynchronous_operations_with_expectations