Junior — Middle
Pouvez-vous parler de votre expérience avec l'annotation @Spy dans les tests ?
sobes.tech IA
Réponse de l'IA
Аннотация @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.