Как проверить лямбда-веселье c с помощью Mockito in Android - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть этот слушатель

interface AuthListener<T : Any> {
    fun onCompletion(response: Response, serializedObject: T?, error: Error?)
}

Существует также расширение для удовольствия c

fun AuthService.login(
    credential: Credential,
    completion: (Response, LoginResponse?, Error?) -> Unit
) {
    login(credential, object :
        AuthService.AuthListener<LoginResponse> {
        override fun onCompletion(
            response: Response,
            serializedObject: LoginResponse?,
            error: Error?
        ) {
            completion(response, serializedObject, error)
        }
    })
}

В докладчике я звоню вот так

authService.login(Credential(username, password)) {
    networkResponse, response, error ->

    when (networkResponse.statusCode) {

        HTTP_STATUS_CODE_OK -> {}
        HTTP_STATUS_CODE_BAD_REQ -> {}
    }
}

Поэтому я пытаюсь написать модульный тест для кода состояния, но думаю, что я делаю неправильно. Как я могу написать модульный тест для кодов состояния?

 val responseCaptor = argumentCaptor<(Response, LoginResponse?, Error?) -> Unit>()
        val credential = Credential(FAKE_USERNAME, FAKE_PASSWORD)
        verify(authenticationServiceMock)?.login(credential, responseCaptor.capture())
        responseCaptor.firstValue.invoke(responseMock, loginResponseMock, errorMock)

Это ошибка:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method AuthServiceKt.login, parameter completion
......
org.mockito.exceptions.misusing.UnfinishedVerificationException:
Missing method call for verify(mock) here:
-> at setupRoleTest
...