Mockito doReturn (). When () вызывает оригинальный метод - PullRequest
0 голосов
/ 14 сентября 2018

Я не могу заставить Mockito переопределить метод в классе, который я тестирую.

@Test
public void test_classToTest() throws Exception {
    DependencyA dependencyA = mock(DependencyA.class);
    DependencyB dependencyB = mock(DependencyB.class);
    DependencyC dependencyC = mock(DependencyC.class);

    ClassToTest classToTest = ClassToTest.builder().dependencyA(dependencyA)
            .dependencyB(dependencyB).dependencyC(dependencyC).build();

    classToTest= Mockito.spy(classToTest);

    Mockito.doReturn("This is not the method you are looking for").when(classToTest).storeContent(null, null, null);

    String result = classToTest.copyContent(someVariable, SOME_CONSTANT);

Метод, который я пытаюсь переопределить, это classToTest.storeContent (), который вызывается из classToTest.copyContent (). Я знаю, что этот класс немного вонючий, но я не в состоянии его рефакторинг. Однако это не очень сложная установка, и я не уверен, почему вызывается реальный метод .storeContent ().

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вместо использования параметров null для настройки метода макета storeContent я бы предложил использовать ArgumentMatchers.any

1008 * Е.Г. *

import static org.mockito.ArgumentMatchers.*;

// ...

Mockito.doReturn("This is not the method you are looking for").when(classToTest).storeContent(any(), any(), any());
0 голосов
/ 17 сентября 2018

Существует ограничение в Mockito (и других инструментах для насмешек), что методы final нельзя ставить в тупик.

Может быть, ваш ClassToTest#storeContent помечен как final?

Если это так, просто удалите ключевое слово final, и механизм заглушки должен сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...