Вебинары Разобраться в IT Реферальная программа Тесты
Программирование Аналитика Дизайн Маркетинг Управление проектами
30 Дек 2023
2 мин
892

Mockito: проверка вызова методов на объектах, созданных в методе

Пройдите тест, узнайте какой профессии подходите

Часто в процессе разработки и тестирования программного обеспечения возникает необходимость проверки, вызывался ли определённый метод на объекте,

Часто в процессе разработки и тестирования программного обеспечения возникает необходимость проверки, вызывался ли определённый метод на объекте, который был создан внутри другого метода. Это становится особенно актуально при использовании библиотеки Mockito для написания модульных тестов на языке Java.

Рассмотрим пример:

public class ExampleClass {
    public void mainMethod() {
        HelperClass helper = new HelperClass();
        helper.subMethod();
    }
}

В приведённом коде метод mainMethod создаёт экземпляр класса HelperClass и вызывает на нём метод subMethod. При написании модульного теста может возникнуть задача проверить, что метод subMethod действительно вызвался один раз после вызова mainMethod.

В Mockito для этого используется метод verify(). Однако, применить его в данном случае напрямую не получится, поскольку объект helper создаётся внутри метода mainMethod и не доступен извне.

На этом этапе можно воспользоваться другим инструментом Mockito — @InjectMocks. Эта аннотация позволяет автоматически создать мок-объект и внедрить его в тестируемый класс.

Пример использования:

@RunWith(MockitoJUnitRunner.class)
public class ExampleClassTest {

    @Mock
    private HelperClass helperMock;

    @InjectMocks
    private ExampleClass example;

    @Test
    public void testMainMethod() {
        example.mainMethod();
        verify(helperMock, times(1)).subMethod();
    }
}

В этом примере создаётся мок-объект helperMock класса HelperClass и внедряется в тестируемый экземпляр класса ExampleClass. После вызова mainMethod на example можно проверить, что метод subMethod был вызван на моке helperMock ровно один раз.

Таким образом, с помощью Mockito можно решить задачу проверки вызова метода на объекте, который создаётся внутри другого метода.

Добавить комментарий