Котлин: Вручную встраивание общей функции дает другой результат?

У меня простой тестовый класс

class SimpleClassTest { private fun <T> anyObject(): T { return Mockito.anyObject<T>() } lateinit var simpleObject: SimpleClass @Mock lateinit var injectedObject: InjectedClass @Before fun setUp() { MockitoAnnotations.initMocks(this) } @Test fun testSimpleFunction() { simpleObject = SimpleClass(injectedObject) simpleObject.simpleFunction() verify(injectedObject).settingDependentObject(anyObject()) } } 

Он отлично работает и проходит.

Поскольку частная общая anyObject() используется только один раз, поэтому я решаю ее вложить (вручную), то есть удалить необходимость этой функции, в результате чего я изменяюсь от

 verify(injectedObject).settingDependentObject(anyObject()) 

в

 verify(injectedObject).settingDependentObject(Mockito.anyObject<DependentClass>()) 

Однако эта ошибка теперь как java.lang.IllegalStateException: Mockito.anyObject<DependentClass>() must not be null

Что-нибудь я сделал неправильно, введя вызов функции в прямое заявление?

Есть ли что-то другое между использованием

 private fun <T> anyObject(): T { return Mockito.anyObject<T>() } 

и ниже?

 Mockito.anyObject<DependentClass>() 

Источник для Mockito.anyObject() :

 /** * Matches anything, including null. * <p> * This is an alias of: {@link #any()} and {@link #any(java.lang.Class)} * <p> * See examples in javadoc for {@link Matchers} class * * @return <code>null</code>. */ public static <T> T anyObject() { return (T) reportMatcher(Any.ANY).returnNull(); } 

Этот метод устанавливает некоторое внутреннее состояние для Mockito, а затем переходит к возврату null . Поскольку вы ожидаете settingDependentObject() экземпляр в свой settingDependentObject() , время выполнения не выполняется.


Почему ваш первый метод сработал, однако, я не уверен. Кастинг с null в T похоже, работал некоторое время назад , но для меня это больше не работает. В этом отношении я не смогу добиться успеха в вашей первой реализации.

Intereting Posts
Делегирование конструктора Котлина во внутренний класс данных? Как запустить тесты Spek с Maven? Android Studio 3.0 не может предложить импорт для shl и shr в Kotlin Объем модификатора внутренней видимости в Котлине Эффективный способ добавления строк, разделенных запятой Ошибка Kotlin: Ожидаемые 2 параметра типов android.widget.CompoundButton !, kotlin.Boolean Есть ли способ сделать BigDecimal быстрее, чем здесь? Связывание данных Kotlin Android studio errors Удалить символы из строки, которая встречается в другой строке в Котлине Разница между Lock.withLock и синхронизация в Kotlin Странная ошибка «Неразрешенная ссылка:» после обновления до Kotlin 1.0.5 Метод anko toast () вызывает java.lang.NoSuchMethodError при вызове из фрагмента Почему нажатие на элементы RecyclerView возвращает неверный идентификатор элемента? Dokka javadoc jar не работает с Intellij IDE Ошибка использования IntDef, определенного в Kotlin при использовании в Java