我正在使用 junit、mockito 和 mockMVC 来测试 webapp 的工作。我正在与一个我无法弄清楚的注入依赖作斗争。我的 webapp 结构如下。
Class Controller{
@Autowired Service searchService;
@RequestMapping("Search")
public returnType search(@RequestParam("parameter")String parameter){
searchService.doSearch(parameter);
}
}
和服务等级
Class Service{
@Autowired Service2 service2;
public returnType doSearch(String parameter){
//some code
service2.call(parameter);
}
}
我需要测试这个控制器的搜索方法,但是 service2 当前没有运行,因此必须模拟对它的调用。我可以模拟 service2,但无法弄清楚如何在控制器的 mockMVC 实例中注入 service2 的模拟。据我所知,mockito 中的@InjectMocks 只注入一层深的模拟,而不是两层。
编辑:
我正在使用以下内容来获取控制器的 MockMVC 实例
MockMvc controller;
controller = MockMvcBuilders.standaloneSetup(Controller);