У меня есть приложение Spring, и я хочу создать унитарный тест на контроллере, подобном этому. Проблема в том, что класс Wrapper является закрытым внутренним классом, поэтому Wrapper не понимается в тесте. Можно ли издеваться над ним с Mockito без изменения класса контроллера. Я могу использовать prepareData (), чтобы получить экземпляр объекта, но я не знаю, можно ли это использовать для насмешки над этим объектом.
Спасибо
@Controller
public class Controller {
private class Wrapper {
private Object1 field1;
private Object2 field2;
private Object1 method1(){
...
}
private Object2 method1(){
...
}
}
@ModelAttribute("data")
public Wrapper prepareData() {
return new Wrapper ();
}
public String save(@ModelAttribute("data") Wrapper wrapper, BindingResult result, Model model){
...
}
}
Так что в моем тесте у меня было бы что-то вроде этого
@Test
public void usernameEmpty(){
BindingResult result = Mockito.mock(BindingResult.class);
Model model = Mockito.mock(Model.class);
Wrapper data = //how to mock it
when(data.method1()).then(new Foo1());
when(data.method2()).then(new Foo2());
String returned = controller.save(data, result, model);
....
}