我有一个带有 Cognito 身份验证的 iOS 应用,其实现与CognitoYourUserPoolsSample非常相似。最重要的片段在SignInViewController.swift中:
当用户点击登录时,会添加异步任务:
var passwordAuthenticationCompletion: AWSTaskCompletionSource<AWSCognitoIdentityPasswordAuthenticationDetails>? ... @IBAction func signInPressed<...> { ... let authDetails = AWSCognitoIdentityPasswordAuthenticationDetails(username: self.username.text!, password: self.password.text! ) self.passwordAuthenticationCompletion?.set(result: authDetails) ...
稍后我们会得到成功或错误响应:
extension SignInViewController: AWSCognitoIdentityPasswordAuthentication { public func getDetails<...> { DispatchQueue.main.async { // do something in case of success ... public func didCompleteStepWithError<...> { DispatchQueue.main.async { // do something in case of failure ...
我还有一个 UI 测试,填写用户名和密码,点击登录并验证响应:
class MyAppUITests: XCTestCase {
...
func loginTest() {
let usernameField = <...>
usernameField.tap()
usernameField.typeText("user@domain.com")
...
// same for password field
// then click Sign In
<...>.buttons["Sign In"].tap()
目前,此测试针对的是实际的AWS 基础设施,由于许多原因,这并不理想。我想要的是模拟来自 AWS 的各种响应。
我怎样才能做到这一点?
我认为最好的办法是嘲笑或刺伤任务队列,但我不知道如何处理。任何方向将不胜感激。如果您以其他方式处理类似任务,我也想听听您的想法,谢谢。