spring - Spring测试:ApplicationContext配置类(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: No qualifying bean of type 'org.springframework.data.mongodb.core.MongoTemplate' available
相关项目依赖:
<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>
有任何想法吗?
解决方案
您尝试在此处加载自定义 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);
}
}
推荐阅读
- c++ - 对类 c++ 中定义的函数的未定义引用错误
- ios - Swift - 结合 2 个 UIViews 和 1 个无缝边框
- python - 导入烧瓶在我的 macbook pro m1 芯片上不起作用
- javascript - 笑话:ReferenceError:regeneratorRuntime 未定义
- python - 如何填充一行文本框中的下一项
- php - 如何将图像转换为文本?
- intel-vtune - VTune GUI 中没有调用堆栈信息
- javascript - 即使我将 a - b 更改为 b - a,排序在 D3 层次结构中也不起作用
- java - java.io.EOFException:读取流数据期间 ZLIB 输入流意外结束
- python - 如何基于多个分隔符(连续的空格)进行分隔