Я пытаюсь проверить метод с функцией высокого порядка в качестве параметра. И перед лицом этой ошибки:
Argument(s) are different! Wanted:
viewContractMock.showError(
(fetchUserIdentity_showOptions_failed$2) Function0<kotlin.Unit>
);
-> at br.com.fastshop.ecommerce.ui.resetpassword.controller.RecoveryOptionsControllerTest.fetchUserIdentity_showOptions_failed(RecoveryOptionsControllerTest.kt:65)
Actual invocation has different arguments:
viewContractMock.showError(
() Function0<kotlin.Unit>
);
-> at br.com.fastshop.ecommerce.ui.resetpassword.controller.RecoveryOptionsController$observeLive$2.onChanged(RecoveryOptionsController.kt:29)
Видимо, я не передаю правильный параметр, когда вызываю метод showError
Это мой забавный тест:
@Test
fun fetchUserIdentity_showOptions_failed() {
//Arrange
`when`(guestIdentityDataSourceMock.userInfo()).thenReturn(Completable.error { RuntimeException("") })
//Act
SUT.onStart()
//Assert
verify(viewContractMock).showLoading()
verify(viewContractMock).hideLoading()
verify(viewContractMock).showError { fetchUserIdentity_showOptions_failed() }
}
А вот где мои методы вызываются из приложения:
recoveryOptionsUseCase.userIdentityLive.observe({ lifecycle }) {
when (it.status) {
ResourceState.LOADING -> {
if (it.loading) {
viewContract.showLoading()
} else {
viewContract.hideLoading()
}
}
ResourceState.SUCCESS -> {
viewContract.bindOptions()
}
ResourceState.ERROR -> viewContract.showError(it.callback!!)
}
}