Использование метода Mockito.when для метода, который вызывает другой метод в ответ - PullRequest
1 голос
/ 16 апреля 2020

Я пытаюсь проверить свой класс, но кажется, что мой Mockito.when () не работает, и я получаю «пример» вместо «другой пример». Любые идеи?

public class ExampleClass {
    public String create(String example){
         return doSth();
    }

    public String doSth(){
         return "example";
    }
}
public class ExampleClassTest {
    @Mock
    ExampleClass exampleClassMock;

    public void createTest(){
        when(exampleClassMock.doSth()).thenReturn("another example");

        assertEquals(exampleClassMock.create("x"), "another example");
    }
}

1 Ответ

0 голосов
/ 16 апреля 2020

Прежде всего, не забудьте поместить аннотацию @Test на ваши тестовые методы и @RunWith(MockitoJUnitRunner.class) на тестовый класс.

Во-вторых, если вам нужно протестировать метод некоторого класса, и внутри него вызывается другой метод того же класса, который вы хотите смоделировать, тогда вам нужно использовать @Spy:

@RunWith(MockitoJUnitRunner.class)
public class ExampleClassTest {

    @Spy
    ExampleClass exampleClassMock;

    @Test
    public void createTest() {
        when(exampleClassMock.doSth()).thenReturn("another example");

        assertEquals(exampleClassMock.create("x"), "another example");
    }
}

См. документы для шпионажа.

...