У меня есть два смоделированных объекта из одного класса, разница только между двумя объектами в другом состоянии.Прежде чем я смогу проверить разницу в состоянии, мне нужно заглушить некоторые методы, это значит, что я должен сделать это для обоих объектов, которые не кажутся мне эффективными.
У меня есть следующие настройки для модульного теста на Java:
@Mock
private CuratorFramework zkClient;
@Mock
private CuratorFramework zkClientNotStarted;
@BeforeEach
void beforeEach() {
when(zkClient.getState()).thenReturn(CuratorFrameworkState.STARTED);
when(zkClient.checkExists()).thenReturn(existsBuilder);
when(zkClient.exampleMethod()).thenReturn(exampleObject);
...
when(zkClientNotStarted.getState()).thenReturn(CuratorFrameworkState.LATENT);
when(zkClientNotStarted.checkExists()).thenReturn(existsBuilder);
when(zkClientNotStarted.exampleMethod()).thenReturn(exampleObject);
...
}
Что неправильно меня теряет, потому что там много повторяющегося кода и не могу найти ничего похожего на это:
@Mock
private CuratorFramework zkClient;
@Mock
private CuratorFramework zkClientNotStarted;
@Mock
private CuratorFramework zkClientBase;
@BeforeEach
void beforeEach() {
when(zkClientBase.checkExists()).thenReturn(existsBuilder);
when(zkClientBase.checkExists()).thenReturn(existsBuilder);
when(zkClientBase.exampleMethod()).thenReturn(exampleObject);
...
zkClient.inheritStubs(zkClientBase)
when(zkClient.getState()).thenReturn(CuratorFrameworkState.STARTED);
zkClientNotStarted.inheritStubs(zkClientBase);
when(zkClientNotStarted.getState()).thenReturn(CuratorFrameworkState.LATENT);
}
Есть ли способ клонировать/ скопировать макет в новый макет, который наследует инициализированные заглушки?Или это неправильный вариант использования для инфраструктуры Mockito?
Единственный похожий вопрос, который я обнаружил, это: Mockito: фиктивный объект, основанный на другом И этот вопрос был задан более 5 лет назад.Я надеюсь, что за это время что-то изменилось.