我有一个函数
final class API {
func forgotPassword(
username: String
) -> Future<ConfirmationStatus, Never> {
Future { _ in
AWSMobileClient.default().forgotPassword(
username: username
) { forgotPasswordResult, error in
if let forgotPasswordResult = forgotPasswordResult {
switch forgotPasswordResult.forgotPasswordState {
case .confirmationCodeSent:
// show an alert to a user here
break
default:
logger.error("Error: Invalid case.")
}
} else if let error = error {
logger.error("Error occurred: \(error.localizedDescription)")
}
}
}.onFailure {
logger.error($0)
}
}
}
当用户点击按钮时将被调用。我想测试一下。我大致了解我应该如何测试它。我应该创建一个将被调用而不是 AWSMobileClient.default().forgotPassword()
的函数,我应该在 forgotPassword
测试中使用它。
它可能在协议(protocol)的扩展中起作用。而 AWSMobileClient
应该符合这个协议(protocol)。
我应该如何测试 API.forgotPassword
?
我用了BrightFuture发出异步请求。
最佳答案
应该有允许依赖注入(inject)的协议(protocol)。
让它成为AuthClient
。它应该具有我们将从 AWSMobileClient
使用的所有属性。并声明一个扩展。
extension AWSMobileClient: AuthClient {}
我们应该有一个符合这个协议(protocol)的类。例如 Auth
。它应该有一个 authClient
属性。关心我们的身份验证客户端将是可变的。
在应用顶部的某个地方,我们将进行 Auth
初始化,将 ASWMobileClient
作为 authClient
Auth(AWSMobileClient.default())
在测试中,我们应该将模拟传递给 Auth
。 MockAuthClient:AuthClient
将包含我们要在应用中测试和使用的所有方法。
关于swift - 如何测试快速发出 AWSMobileClient 请求的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59337666/