Импорт для мокито

1

Я пытаюсь поставить утверждение как

when(myDao.fetchTree(anyLong())).thenReturn(myTreeList);

и у меня есть импорт

import static org.mockito.Mockito.when;
import static org.mockito.Matchers.anyLong;
import static org.mockito.Matchers.thenReturn; //not importing

import for thenReturn не отображает. Это проблема с версией? Я использую Mockito 1.8.4.

Теги:
mockito

3 ответа

1
Лучший ответ

Mockito, когда возвращает объект класса OngoingStubbing. Этот класс имеет метод thenReturn(), и тот, который вызывается в вашем примере кода. Дополнительного импорта не требуется.

when(myDao.fetchTree(anyLong())).thenReturn(myTreeList);

могут быть разбиты как

OngoingStubbing thing = when(myDao.fetchTree(anyLong()));
thing.thenReturn(myTreeList);

Вы просто вызов thenReturn метод OngoingStubbing.

  • 0
    Но STS жалуется с красным подчеркиванием.
  • 0
    Вы не можете просто удалить строку импорта?
Показать ещё 2 комментария
2

Этого должно быть достаточно, если вы используете:

import static org.mockito.Mockito.*;

И удалите остальные.

  • 0
    Обычно я ненавижу * импорт, они затрудняют рефакторинг. Но для тестов и импорта поддержки тестов, как это? Действуй.
0

Ваш вопрос: это проблема с версией? Я бы сказал НЕТ, это не проблема с версией.

Как было предложено ранее, вы должны

  • создать минимальный тест с помощью этого кода в тесте

    when(myDao.fetchTree(anyLong())).thenReturn(myTreeList);
    
  • запустите этот код из командной строки (не внутри в STS или любой IDE или что-то вроде)

В: Зачем запускать его из командной строки и избегать использования IDE файлов и т.д.? A: Потому что иногда синтаксические анализаторы кода и проверки и валидаторы вашей привилегированной IDE сообщают о ложных срабатываниях о некоторых угловых случаях в коде.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню