Junior — Middle
Μπορείτε να μιλήσετε για την εμπειρία σας με τη χρήση της σημείωσης @Spy στις δοκιμές;
sobes.tech AI
Απάντηση από 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.