Вложенные заглушки 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

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