Как проверить методы с параметром функции высокого порядка? - PullRequest
2 голосов
/ 28 октября 2019

Я пытаюсь проверить метод с функцией высокого порядка в качестве параметра. И перед лицом этой ошибки:

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!!)
        }
    }
...