一点背景:
我正在使用 Spring 2.5,特别是 Spring IOC 和注释。
我正在使用 @Autowired
在我的代码中( Autowiring 是按类型完成的)
并使用 @Component
用于将类暴露给自动布线。
当我尝试测试我的代码时,出现了下面描述的情况。
现在解决问题:
注意:我为测试环境使用了不同的 Spring 上下文。
我有课FOO
这是@Autowired
但在测试上下文中,我想使用相同类型的不同类MockFoo
(扩展 FOO
)。
由于 FOO
的依赖注入(inject)的多个选项,Spring 设置当然会自动失败。类(FOO
和 MockFOO
都符合类型检查)。
我正在寻找一种注入(inject)测试 bean 而不是原始 bean 的方法。
我希望 Spring 允许使用 Context 配置文件来覆盖 bean 注入(inject)或命令 Spring 不要 Autowiring 特定的 bean。
但
所有这些选项似乎只存在于最初在 Spring 上下文配置文件中定义的 bean。
最佳答案
使用 ReflectionTestUtils
手动设置 Mock 代替 Autowiring 的依赖项(为此目的,您的模拟不得由 Spring 管理,因此不存在歧义)
关于unit-testing - 如何覆盖 Spring @Autowired 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2843281/