Kotlin + Mockito: получить ноль

Пожалуйста, я немного запутался, этот тест не проходит с "java.lang.IllegalStateException: notNull() не должен быть нулевым":

@Test
fun when_resume_subscribe() {
    // WHEN
    presenter.onStart()
    // THEN
    verify<Model>(model).subscribe(notNull()) // <---- fails here
}

Вот тестируемый метод:

override fun onStart() {
    model.subscribe(object : Observer<Bar> {
        override fun onCompleted() {
            view?.showProgress(false)
        }
//... more stuff...

Пожалуйста, что происходит?

2 ответа

Решение

Это в основном включает Null Object в объект конкретного класса с использованием Generic. Код, приведенный ниже, где мы переопределяем any() для соответствующей обработки проблемы.

private fun <T> any(): T {
Mockito.any<T>()
return uninitialized()
  }
private fun <T> uninitialized(): T = null as T

Для получения более подробной информации вы можете обратиться к этому учебнику https://medium.com/@elye.project/befriending-kotlin-and-mockito-1c2e7b0ef791.

С использованием

      <dependency>
  <groupId>org.mockito.kotlin</groupId>
  <artifactId>mockito-kotlin</artifactId>
  <version>3.2.0</version>
  <scope>test</scope>
</dependency>

будет метод Mockito.anyOrNull() который не будет терпеть неудачу для аргументов, не допускающих значения NULL ...

Другие вопросы по тегам