Вложенные заглушки Mockito — оставить или заменить?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Вложенные заглушки Mockito — оставить или заменить?

Сообщение Anonymous »

Я не уверен, что вложенные заглушки, подобные этой, являются хорошей практикой.

Код: Выделить всё

        given(settingsMock.getConnections()).willReturn(connections);
will(i -> given(settingsMock.getConnections()).willReturn(i.getArgument(0))).given(settingsMock).setConnections(any());
Это из панельного теста JavaFX. Короче говоря, первая заглушка вызывается при загрузке данных, вторая заглушка вызывается во время сохранения.
Фактический объект настроек считывает и записывает в физический XML с помощью getConnections() и setConnections() соответственно.
Я как бы полагаюсь на тот факт, что макет имитирует мутацию состояния, поскольку мой тестовый метод должен убедиться, что правильно (обновлено) Объект настроек передается в DAO, а не в устаревший.

Код: Выделить всё

        ArgumentCaptor captor = ArgumentCaptor.forClass(DbSettings.class);
then(settingsDaoMock).should().saveSettings(captor.capture());
DbSettings savedSettings = captor.getValue();
// this assert follows deletion of one of the initially loaded connections from the GUI list
assertThat(savedSettings.getConnections()).containsOnly(postgresConnection);
Естественно, я не в восторге от пересмотра всего класса настроек (например, чтобы он не был так связан с базовым XML). В любом случае, я не тестирую класс настроек, поэтому что бы ни делала реальная реализация, для меня это не имеет значения.
Что вы об этом думаете? Должен ли я сохранить свой подход или заменить его чем-то лучшим?

Подробнее здесь: https://stackoverflow.com/questions/798 ... or-replace
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»