Можете рассказать о вашем опыте использования аннотации @Spy в тестировании?

Аннотация @Spy в Java используется в тестировании с помощью Mockito для создания частичного объекта-заглушки (spy).

Короткий ответ

Что ответить на собеседовании

Аннотация @Spy в Java используется в тестировании с помощью Mockito для создания частичного объекта-заглушки (spy). В отличие от @Mock, который создает полностью имитированный объект, @Spy позволяет использовать реальные методы объекта, но при этом можно подменять поведение отдельных методов.

Подробный разбор

Ответ с пояснениями

Аннотация @Spy в Java используется в тестировании с помощью Mockito для создания частичного объекта-заглушки (spy). В отличие от @Mock, который создает полностью имитированный объект, @Spy позволяет использовать реальные методы объекта, но при этом можно подменять поведение отдельных методов.

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

Пример:

import static org.mockito.Mockito.*;

public class MyServiceTest {

    @Spy
    private MyService myService = new MyService();

    @Test
    public void testPartialMock() {
        // Подменяем поведение метода
        doReturn("mocked result").when(myService).someMethod();

        // Вызов другого метода будет реальным
        String result = myService.callAnotherMethod();

        // Проверяем результат
        assertEquals("expected result", result);
    }
}

Важно помнить, что для корректной работы @Spy объект должен быть либо создан вручную, либо инициализирован с помощью MockitoAnnotations или MockitoExtension.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее