Если я использую @Spy, это поможет мне издеваться над методами. но он не работает для инициализации частных переменных
FieldSetter.setField(discoveryService, discoveryService.getClass().getDeclaredField("discoveryURL"), discoveryUrl);
Если я удалю @spy, FieldSetter будет инициализировать фиктивные частные переменные. Мой код с @spy:
@InjectMocks
/*line 5*/ @Spy
private Class object;
@Test
void getFetchDiscoveryTest() throws IOException, NoSuchFieldException {
String discoveryUrl = "https://ffc-onenote.officeapps.live.com/hosting/discovery";
/*line 15*/ FieldSetter.setField(object, object.getClass().getDeclaredField("discoveryURL"), discoveryUrl);
/*line 16*/ doThrow(IOException.class).when(object).getBytes(any());
/*line 17*/ when(object.getBytes(any())).thenThrow(new IOException("IO issue"));
assertThrows(Exception.class, () -> object.getWopiDiscovery());
здесь, если я поставил строку № 5, то строка № 15 не работает, а строка № 16 работает нормально. почему, если у меня есть @spy, FieldSetter не работает. как заставить FieldSetter работать и с @spy?