Mockito позволяет mock наследовать заглушки от уже существующего mock - PullRequest
1 голос
/ 10 апреля 2019

У меня есть два смоделированных объекта из одного класса, разница только между двумя объектами в другом состоянии.Прежде чем я смогу проверить разницу в состоянии, мне нужно заглушить некоторые методы, это значит, что я должен сделать это для обоих объектов, которые не кажутся мне эффективными.

У меня есть следующие настройки для модульного теста на 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 лет назад.Я надеюсь, что за это время что-то изменилось.

...