我有一个像这样的 Bean 结构(但有更多级别):
@Controller
public class MyController {
@Autowired
private MyService myService;
}
@Service
public class MyService {
@Autowired
private MyDao myDao;
}
@Repository
public class MyDao {
}
我想MyController
用MockMvc
. 如果我创建一个创建实例的上下文MyController
,它需要一个MyService
用于注入的实例,它需要一个MyDao
实例,依此类推。即使我嘲笑MyService
(无组件扫描)
@Bean
public MyController myController() {
MyController controller = new MyController ();
return controller;
}
@Bean
public MyService myService() {
return Mockito.mock(MyService.class);
}
Spring 将看到内部的@Autowired
for并尝试在上下文中找到一个。它显然会失败并抛出异常。我可以为我的每个班级创建一个模拟的上下文,但我宁愿不这样做。MyDao
MyService
有什么方法可以告诉 Spring 不要注入 bean 的字段,或者以不同的方式简单地在控制器中注入我需要的一个模拟来进行测试MockMvc
?