unit-testing - 如何覆盖 Spring @Autowired 的行为

标签 unit-testing spring dependency-injection

一点背景:

我正在使用 Spring 2.5,特别是 Spring IOC 和注释。

我正在使用 @Autowired在我的代码中( Autowiring 是按类型完成的)
并使用 @Component用于将类暴露给自动布线。

当我尝试测试我的代码时,出现了下面描述的情况。

现在解决问题:

注意:我为测试环境使用了不同的 Spring 上下文。

我有课FOO这是@Autowired但在测试上下文中,我想使用相同类型的不同类MockFoo (扩展 FOO)。

由于 FOO 的依赖注入(inject)的多个选项,Spring 设置当然会自动失败。类(FOOMockFOO 都符合类型检查)。

我正在寻找一种注入(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/

相关文章:

python-3.x - 如何模拟elasticsearch.helpers.bulk

java - Spring Session JDBCTokenRepository 覆盖默认表

java - Apache Spark 和 Spring Boot 的依赖冲突

spring - Spring WebFlux 支持 OAuth2 授权服务器吗?

java - 没有 @Provides-annotated 方法就不能提供 Dagger 2

java - 升级到 JUnit4 并通过同时运行遗留 JUnit 3 测试和测试套件来保留它们

java - 单元测试很慢,因为spring classpath扫描多次扫描同一个包

Angular 2注入(inject)服务未定义

c# - 在哪里放置 IoC 容器配置?

javascript - 在Sinon中假调用具有特定参数的函数