模拟适用于Android的AWSAmplifyAuthAPI
我的 Android 应用程序使用AWS Cognito 和 Amplify Auth SDK进行身份验证,我正在尝试为登录/注册流程编写 JUnit 测试用例。我正在使用 Mockito 框架来模拟这些类。
我从登录开始,我的登录模型是这样的
class LoginService(val auth: AuthCategory) {
fun login(username: String, password: String): MutableLiveData<Login> {
val liveData = MutableLiveData<Login>()
auth.signIn(username, password,
{ result ->
liveData.postValue(Login(result, null))
},
{ error ->
liveData.postValue(Login(null, error))
}
)
return liveData
}
}
我的视图模型这样称呼它
class LoginViewModel : ViewModel() {
val loginService = LoginService(Amplify.Auth)
fun login(username: String, password: String): MutableLiveData<Login> {
return loginService.login(username, password)
}
}
我的测试用例看起来像这样
lateinit var auth: AuthCategory
lateinit var loginService: LoginService
@Before
fun onSetup() {
auth = mock(Amplify.Auth::class.java)
loginService = LoginService(auth)
}
@Test
fun loginTest() {
val authSignIn: Consumer<*>? = mock(Consumer::class.java)
val authEx: Consumer<*> = mock(Consumer::class.java)
`when`(
auth.signIn(
anyString(), anyString(),
authSignIn as Consumer<AuthSignInResult>, authEx as Consumer<AuthException>
)
)
loginService.login("username", "password").observeForever {
assertTrue(it.result?.isSignInComplete!!)
}
}
请帮我验证这种方法,我试图找出一种方法来触发AuthSignInResult和AuthException的Auth.signIn()方法,这样,如果登入成功,或有错误我会断言。
我对 AWS Amplify 和 Cognito 环境非常陌生,非常感谢以正确方式执行此操作的建议/参考。提前致谢。