我想测试我的应用程序,以便在真实存储库中注入其他bean。
我有一个这样的存储库:
@Component
public class MyRepo {
@Autowired
private MongoTemplate template;
public void methodA(){
template.find({});
}
}
作为Spring引导运行应用程序时,会从配置文件中读取MongoTemplate。
这是我的配置
@Configuration
public class MyConfig {
@Bean
public MongoTemplate mongoTemplate(){
MongoTemplate mongo = new MongoTemplate();
mongo.setxyz;
return mongo;
}
}
我想要实现的是,在运行单元测试文件时,我想将下面的bean注入到实际的MyRepo中。换句话说,我希望Spring使用TestConfig.MongoTemplate bean而不是MyConfig.MongoTemplate。
@Configuration
public class TestConfig {
@Bean
public MongoTemplate mongoTemplate(){
MongoTemplate embeded = new MongoTemplate();
embeded.setxyz;
return embeded;
}
}
感谢您的帮助。
答案 0 :(得分:3)
@Profile("!test")
@Configuration
public class MyConfig {
@Bean
public MongoTemplate mongoTemplate(){
MongoTemplate mongo = new MongoTemplate();
mongo.setxyz;
return mongo;
}
}
用于测试配置:
@Profile(value = {"test"})
@Configuration
public class TestConfig {
@Bean
public MongoTemplate mongoTemplate(){
MongoTemplate embeded = new MongoTemplate();
embeded .setxyz;
return embeded;
}
}
要测试时,在application.properties文件中添加以下内容。
spring.profiles.active=test
另一个解决方案可以使用模仿框架here