Назад к вопросам
Junior — Middle
57
Можете рассказать о вашем опыте использования аннотации @Spy в тестировании?
Компании, где спрашивали
Ifellow
Ответ от нейросети
sobes.tech AI
Аннотация @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.