Spring: вводить другой компонент при выполнении тестов - PullRequest
0 голосов
/ 10 октября 2018

Я хочу протестировать свое приложение, где я могу внедрить другой бин в настоящий репозиторий.

У меня есть такой репозиторий:

@Component
public class MyRepo {
   @Autowired
   private MongoTemplate template;

   public void methodA(){
    template.find({});
   }
}

Этот MongoTemplate читается из файла конфигурации, когда приложение запускается как загрузка Spring.

Это моя конфигурация:

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

Чего я хочу добиться, так это то, что при запуске файла моего модульного теста я хочу внедрить бин ниже в реальный MyRepo.Другими словами, я хочу, чтобы Spring выбрал bean-компонент TestConfig.MongoTemplate вместо MyConfig.MongoTemplate.

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

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 10 октября 2018
@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 здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...