mockito-kotlin всякий раз, когда аргументы - параметр, указанный как ненулевой, является нулем - PullRequest
0 голосов
/ 05 января 2019

Для тестирования я написал оболочку для ViewModelProviders.of(...).get(...), чтобы я мог предоставить макет:

class MyViewModelProvider {
    fun <T : ViewModel> get(scope: Fragment, type: Class<T>) : T {
        return ViewModelProviders.of(scope).get(type)
    }

    ...
}

А потом в моем тесте:

Тестовый модуль кинжала:

import com.nhaarman.mockito_kotlin.mock

...

fun provideMyViewModelProvider(): MyViewModelProvider {
        return mock()
}

А в моем тестовом классе:

import com.nhaarman.mockito_kotlin.any
import com.nhaarman.mockito_kotlin.anyOrNull
import com.nhaarman.mockito_kotlin.whenever
...
@Inject
lateinit var mockViewModelProvider: MyViewModelProvider
...
val mockViewModel = mock<MyViewModel>()

whenever(mockViewModelProvider.get(any<Fragment>(), any<Class<ViewModel>>())).thenReturn(mockViewModel)
...

Однако на линии с whenever я получаю ошибку:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter scope

Я пробовал пару вещей:

  1. Обмен any<Fragment>(), any<Class<ViewModel>>()) с anyOrNull<Fragment>(), anyOrNull<Class<ViewModel>>() -> все еще вызывает ту же ошибку

  2. Пробовал с использованием конкретных ссылок whenever(mockViewModelProvider.get(myFragment, MyViewModel::class.java)).thenReturn(mockViewModel) -> Вызывает реальный метод вместо макета

Не уверен, что я делаю не так ...

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Нашел ответ:

Проверяемая функция должна быть помечена open или использовать mock-maker-inline.

https://github.com/nhaarman/mockito-kotlin/wiki/Parameter-specified-as-non-null-is-null

0 голосов
/ 05 января 2019

Каково значение mockViewModel? Это ноль?

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