春季测试:ApplicationContext配置类(春季数据mongodb)

时间:2018-09-21 10:44:31

标签: spring spring-data spring-data-mongodb

我只想测试与mongo相关的代码。这是我的测试代码片段:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {MongoConfig.class})
@SpringBootTest
public class ModelTest {

    @Autowired
    private MongoTemplate mongoTemplate;

如您所见,我正在使用@ContextConfiguration来仅加载与Mongo相关的配置:

@Configuration
public class MongoConfig {

    @Bean
    public CustomConversions customConversions(){
        List<Converter<?, ?>> converters = new ArrayList<Converter<?, ?>>();
        converters.add(new ReferenceWriterConverter());
        return new MongoCustomConversions(converters);
    }

}

如您所见,mongoTemplate仅打算加载自定义转换器,以便将对象序列化到mongodb数据库。

另外,src/test/resources/application.properties是:

spring.data.mongodb.host: localhost
spring.data.mongodb.port: 27017

问题是,当我尝试运行测试时,我得到的是Unsatisfied dependency expressed through field 'mongoTemplate'

  

UnsatisfiedDependencyException:创建名称为“ net.gencat.transversal.repositori.digital.mongo.ModelTest”的bean时出错:通过字段“ mongoTemplate”表示的不满足的依赖关系;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型为“ org.springframework.data.mongodb.core.MongoTemplate”的合格Bean

相关项目依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

似乎是您尝试在此处加载自定义mongo配置@Bean客户端或扩展AbstractMongoConfiguration的问题。

在此处更改数据库名称,而不是demo

@Configuration
public class MongoConfig extends AbstractMongoConfiguration {

   @Override
   protected String getDatabaseName() {
      return "demo";
   }

  @Override
   public MongoClient mongoClient() {
    return new MongoClient("localhost", 27017);
  }

   @Bean
   public CustomConversions customConversions(){
       List<Converter<?, ?>> converters = new ArrayList<Converter<?, ?>>();
       converters.add(new ReferenceWriterConverter());
       return new MongoCustomConversions(converters);
   }

}