代码之家  ›  专栏  ›  技术社区  ›  Faraz

Spring:在运行测试时注入不同的bean

  •  0
  • Faraz  · 技术社区  · 7 年前

    我想测试我的应用程序,在那里我可以在真实的存储库中注入一个不同的bean。

    @Component
    public class MyRepo {
       @Autowired
       private MongoTemplate template;
    
       public void methodA(){
        template.find({});
       }
    }
    

    这是我的配置:

    @Configuration
    public class MyConfig {
        @Bean
        public MongoTemplate mongoTemplate(){
           MongoTemplate mongo = new MongoTemplate();
           mongo.setxyz;
           return mongo;
        }   
    }
    

    @Configuration
    public class TestConfig {
        @Bean
        public MongoTemplate mongoTemplate(){
           MongoTemplate embeded = new MongoTemplate();
           embeded.setxyz;
           return embeded; 
        }   
    }
    

    感谢您的帮助。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Hasson    7 年前
    @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
    

    另一个解决方案是使用mockito框架 here