У меня проблема с объявлением 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: ошибка теста);
Есть идеи, что может быть причиной?Спасибо!