Тестирование: doAnswer никогда не вызывается, потому что аргументы с любым () не совпадают - PullRequest
0 голосов
/ 15 июня 2019

У меня проблема с объявлением doAnswer, которое никогда не вызывается.Прежде всего, скажите, что у меня есть такая же декларация для другого метода, и она работает.Итак, мои подозреваемые находятся в аргументах, совпадающих ..

Вот код, который я пытаюсь проверить:

fun getPreviewsFromClient(categoryFilter: CategoryFilter, requestToken: String?, callback: Callback<Output, Throwable>) {
    client.getPreviews(categoryFilter.metadataCategory,
            REQUEST_LIMIT,
            requestToken,
            object : ClientListener<ContentViewList>() {
                override fun onSuccess(result: ContentView) {
                    //code
                }

                override fun onError(error: Throwable) {
                    callback.onError(error)
                }
            })
}

data class Output(val nextRequestToken: String, val list: List<Previews>)

И это код тестирования:

@Test
internal fun `Should call onError when error fetching category`() {
    val categoryRequest = CategoryFilter.MyCategory()
    val testError = Throwable("Test error")

    doAnswer {
        val args = it.arguments
        (args[3] as ClientListener<ContentViewList>).onError(testError)
        null
    }.whenever(Client).getPreviews(any(), any(), any(), any())

    filesInteractor.getPreviewsFromClient(categoryRequest, callback)

    Verify on callback that callback.onError(testError) was called
}

Как видите, код прост, и даже с двумя обратными вызовами (из-за требований) в тесте вообще нет асинхронной задачи.Таким образом, поток выполнения уникален.

Когда я запускаю его, я получаю предупреждение о конфигурации и ошибку «Требуется, но не вызывается».

15 июня 2019 г., 17:24:00 org.junit.platform.launcher.core.LauncherConfigurationParameters fromClasspathResource ПРЕДУПРЕЖДЕНИЕ: обнаружены 2 файла конфигурации junit-platform.properties в classpath;будет использоваться только первый.15 июня 2019, 17:24:00 org.junit.platform.launcher.core.LauncherConfigurationParameters fromClasspathResource ИНФОРМАЦИЯ: Загрузка параметров конфигурации платформы JUnit из ресурса classpath [файл: / Users /.../ build / промежуточный тип / sourceFolderJavaResources / test /DEV / отлаживать / junit-platform.properties].15 июня 2019 г., 17:24:01 org.junit.jupiter.engine.config.EnumConfigurationParameterConverter получить ИНФОРМАЦИЮ: Использование режима жизненного цикла экземпляра теста 'PER_CLASS', заданного с помощью параметра конфигурации junit.jupiter.testinstance.lifecycle.default '.

Требуется, но не вызывается: callback.onError (java.lang.Throwable: ошибка теста);

Есть идеи, что может быть причиной?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...