Android Mockito.verify говорит, что аргументы (ы) разные!с печатью того же контента - PullRequest
0 голосов
/ 22 мая 2018

Ситуация

У меня есть интерфейс Tracker, который имеет этот метод:

fun trackEvent(event: String, args: Bundle? = null)

Я хочу проверить, что этот метод вызываетсяс конкретным event.Внутренне тестируемый объект вызывает этот метод с Bundle объектом.Все события указаны как

companion object {
        const val EVENT = "EVENT"
}

Проблема

Проверка не пройдена с этой проверкой:

Mockito.verify(tracker).trackEvent(Tracker.EVENT)

с сообщением:

Аргумент (ы) разные!Требуются: tracker.trackEvent («СОБЫТИЕ», ноль);...

Фактический вызов имеет разные аргументы: tracker.trackEvent ("EVENT", null);...

Есть много решений, которые используют Mockito.eq(), Mockito.refEq(), ArgumentMatchers, Captures и т. Д. Ни одно из них не сработало для меня, давая то же самое или NullPointerException

1 Ответ

0 голосов
/ 23 мая 2018

Для тех, кто столкнется с той же проблемой, решение состоит в том, что вам нужно добавить testImplementation "com.nhaarman:mockito-kotlin:1.5.0" в ваш файл build.gradle.Больше информации здесь https://github.com/nhaarman/mockito-kotlin.

Дело в том, что в Java все классы обнуляются по умолчанию, в отличие от Kotlin.Хотя mockito предназначен для использования с Java, библиотека из вышеупомянутой библиотеки добавляет поддержку использования Mockito с Kotlin.

Так что решение этого конкретного теста

Mockito.verify(tracker).trackEvent(Tracker.EVENT)

-

Mockito.verify(tracker).trackEvent(eq(Tracker.ADD_TRANSACTION), any())

, где eq() и any() являются функциями com.nhaarman.mockito_kotlin.

Более подробная информация здесь: https://stackoverflow.com/a/38722935/3569545

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