Итак, я новичок в Mockito для тестирования фасадов. Поэтому в основном я хочу проверить, будет ли метод службы однажды вызван.Mockito - Доступ к закрытым полям для проверки()
Здесь будет упрощенный пример
Моя_служба
public class Service {
public int myMethod(int index, int number) {
if (index<4){
index = index + number;
}
return index;
}
}
Мои Фасад:
public class Facade {
private Service service;
public void method(){
int i = service.myMethod(4, 2);
}
}
и, наконец, мой тест:
public class FacadeTest {
@InjectMocks
private Facade classUnderTest;
@Mock (name="service")
private Service service;
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
}
@Test
public void test(){
verify(classUnderTest, times(1)).service.myMethod(4,2);
}
}
Я знаю, что это возможно использовать Get ter/Setter-methods в моем Facade, чтобы вернуть Сервис, но я хочу сделать это, не делая этого.
Возможно ли, как я хочу, без каких-либо изменений на Фасад?
И есть ли разница, когда у меня есть проект Spring и используется @Autowired для служебной переменной внутри фасада?
Спасибо!
Замените 'classUnderTest' в методе тестирования' service' и сделайте это. Вы можете только проверять вызовы на mock, а не на тестируемый класс (поскольку это не контролируется Mockito). –
Вам не нужен какой-либо приемник, так как служба, которая вводится и используется фасадом, является «частной службой сервиса». Таким образом, вы имеете доступ к нему и можете проверить, вызван ли его метод. –