Mockiito неверное возвращаемое значение?

Здравствуйте, у меня есть 2 теста для фрагмента метода newInstance ().

Но похоже, что я делаю что-то не так, потому что Mockito игнорирует мои значения пакета.

    @Test
fun onNewInstanceTest_isNotArchive() {

    val bundle = Mockito.mock(Bundle::class.java)
    Mockito.doNothing().`when`(bundle).putBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE, false)

    val eventPlannerListFragment = EventPlannerListFragment.newInstance(bundle)

    val arguments = eventPlannerListFragment.arguments
    val isArchive = arguments!!.getBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE)

    assertFalse(isArchive)
}

@Test
fun onNewInstanceTest_isArchive() {

    val bundle = Mockito.mock(Bundle::class.java)
    Mockito.doNothing().`when`(bundle).putBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE, true)

    val eventPlannerListFragment = EventPlannerListFragment.newInstance(bundle)

    val arguments = eventPlannerListFragment.arguments
    val isArchive = arguments!!.getBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE)

    assertTrue(isArchive)
}

Но похоже, что значения игнорируются.

java.lang.AssertionError
at org.junit.Assert.fail(Assert.java:86)
at org.junit.Assert.assertTrue(Assert.java:41)
at org.junit.Assert.assertTrue(Assert.java:52)
at com.fs.wfm.ui.EventPlannerListFragmentTest.onNewInstanceTest_isArchive(EventPlannerListFragmentTest.kt:67)

Спасибо за любой совет.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
231
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ценности не игнорируются, вы просто не издеваетесь над ними.

Mockito.doNothing()
    .`when`(bundle)
    .putBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE, true)

Эта строка не сохраняет true под данным ключом. В этой строке вы говорите: «Когда я вызываю метод bundle.putBoolean() с указанными аргументами, я хочу, чтобы вы ничего не делали». Для имитации вызова запроса вам понадобится другой метод Mockito.

Mockito.doReturn(true)
    .`when`(bundle)
    .getBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE)

Эта строка, с другой стороны, сообщает Mockito, что он должен возвращать истину для вызовов bundle.getBoolean() с аргументом EventPlanner.EVENT_PLANNER_IS_ARCHIVE.

Другими словами, вам нужно имитировать вызовы запросов, если вы хотите, чтобы они возвращали значения-заглушки.

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