@MaxLich
java developer

Как мокать ДАО, работающее с динамической таблицей, с использованием Mockito?

Здравствуйте. Пишу юнит-тесты на сервис, который который активно работает с другими сервисами. Другие сервисы в основном делегируют вызовы к ДАО. Часть ДАО работает со справочниками, часть - с динамическими таблицами (в которых постоянно меняются данные в процессе работы программы).
Вопрос: как мокать такие ДАО/сервисы, работающие с динамическими таблицами? Для моков использую Mockito.

Просто сейчас как раз пишу юнит-тест на метод, который дважды обращается к сервису с одними и теми же данными (запрос данных). Но в первом случае в ответ должен прийти пустой список, а во втором (после записи в таблицу) - список с одним элементом.

С when()и thenReturn() не получается это сделать. Пока идея только написать свой мок-класс с коллекцией внутри.

PS Пока нашёл, что можно два раза вызвать thenReturn(), но ещё не пробовал. Да и мне не очень нравится это решение, так как у меня скорее зависит не от того, сколько раз сделан запрос данных, а от того, когда следующий раз посылается запрос на получение данных, или, вернее - после чего (после каких действий).
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Можно написать свой Answer, кажется, это должно решить проблему.
Ответ написан
Комментировать
BorLaze
@BorLaze
Java developer
when(mockFoo.someMethod()).thenReturn(0, 1, -1);

Первый вызов вернет 0, второй 1, все остальные -1

UPD:
так как у меня скорее зависит не от того, сколько раз сделан запрос данных, а от того, когда следующий раз посылается запрос на получение данных, или, вернее - после чего (после каких действий)

т.е. типа первый вызов - одна запись, потом вызываем insert или delete, и в зависимости от этого возвращаем или две записи, или ноль?

боюсь, это уже за пределами возможности (да и предназначения) моков...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы