Чтобы решить эту проблему, можно воспользоваться следующими способами:
Конструктор инъекций:
@Service
public class MyService {
private final myValue;
public MyService(@Value("${my.value}") myValue) {
this.myValue = myValue;
}
public String someMethodWhichUsesMyValueField() {
return myValue;
}
}
И вместо использования макета, просто используйте класс и введите ему значение.
Или вы можете использовать:
ReflectionTestUtils.setField(myService, "myValue", "FooBar");
чтобы установить для свойства myValue значение foobar.
Или вы можете изменить его, чтобы использовать вместо него @Spy, что является «частичной насмешкой». Шпион - это исходный класс с его оригинальными методами, и тогда вы можете выбрать имитацию некоторых методов, но в некоторых методах сохранить логику от исходного класса.