Как создать ArgumentMatchers.any (тип: Class <T>) для тестирования в Kotlin? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь провести модульное тестирование класса, который использует следующий сервис:

parserService.parseJsonStringToModel(json: String, adapterClass: Class<T>): T?

Мой первый подход заключался в использовании ArgumentMatchers для реализации модульного тестирования следующим образом:

Mockito.`when`(parserService.parseJsonStringToModel(ArgumentMatchers.any(), ArgumentMatchers.any<CreateAccountRequest>().javaClass)).thenReturn(null)

Так как ArgumentMatchers.any() возвращает null в Kotlin, это производит NullPointerException для необнуляемых типов.Поэтому я попробую библиотеку Mockito-Kotlin , чтобы избежать этой проблемы.Подход выглядит следующим образом:

whenever(parserService.parseJsonStringToModel(any(), any<CreateAccountRequest>().javaClass)).thenReturn(null)

Используемая библиотека решает проблему для первого аргумента, но по-прежнему выдает NullPointerException для переданного второго аргумента.

Итак, как я могу создать ArgumentMatchersдля Class<T> аргументов типа?

1 Ответ

1 голос
/ 20 июня 2019

Вы можете просто создать средство сопоставления непосредственно для Class<CreateAccountRequest>:

whenever(
    parserService.parseJsonStringToModel(
        any(),
        any<Class<CreateAccountRequest>>()
    )
).thenReturn(null)
...