Spring Boot:测试定制MongoTemplate转换器
我将此自定义转换器用于我的Spring Boot服务:Spring Boot:测试定制MongoTemplate转换器,spring,spring-boot,Spring,Spring Boot,我将此自定义转换器用于我的Spring Boot服务: @Configuration public class MongoConfig { @Bean public MongoCustomConversions customConversions(){ List<Converter<?,?>> converters = new ArrayList<>(); converters.
@Configuration
public class MongoConfig {
@Bean
public MongoCustomConversions customConversions(){
List<Converter<?,?>> converters = new ArrayList<>();
converters.add(ReferenceWriterConverter.INSTANCE);
return new MongoCustomConversions(converters);
}
@WritingConverter
enum ReferenceWriterConverter implements Converter<Reference, DBObject> {
INSTANCE;
@Override
public String convert(Reference reference) {
//do stuff
}
}
}
编辑2
我还想使用自定义测试属性。我的意思是,目前,我们正在将属性设置为src/test/resources/application.properties
spring.data.mongodb.host: localhost
spring.data.mongodb.port: 27017
如何加载这些文件属性?解决方案1 如果要使用Spring上下文对其进行测试,可以将测试类注释为
SpringBootTest
,并自动连接MongoTemplate
。然后,它应该包含您的自定义转换,以便您测试它们:
@RunWith(SpringRunner.class)
@SpringBootTest
public class ModelTest {
private List<Reference> references;
@Autowired
private final MongoTemplate mongoTemplate;
public ModelTest() {
this.references = new ArrayList<Reference>();
}
@Before
public void setUp() {
Reference reference = new Reference();
reference.setId("Ref1");
reference.setTimestamp(new Date());
Metadata met = new Metadata();
met.setId("Mdt1");
met.setUser("user");
met.setCreationTimestamp(new Date());
met.setMetadata("[{'departament': 'JUST'}]");
reference.setMetadata(met);
this.references.add(reference);
mongoTemplate.insert(reference);
}
/**
* Assert Office mime type documents.
*/
@Test
public void office() {
fail("Not yet implemented");
}
}
非常感谢@Michael。目前,我有两个问题:1。我现在想知道如何加载自定义测试属性(我已经编辑了这篇文章)。2.
@SpringBootTest
位于何处(依赖关系)?没问题:)1)如果使用SpringBootTest
,这些属性应自动用于您的MongoTemplate
。2) 这是弹簧启动启动器测试的一部分:已解决。它正在获取一个无法立即加载ApplicationContext
。有什么想法吗?你能把stacktrace贴出来吗?我猜Spring应用程序上下文无法初始化,因为缺少配置或类似的情况。我已经详细介绍了这个问题
@RunWith(SpringRunner.class)
@SpringBootTest
public class ModelTest {
private List<Reference> references;
@Autowired
private final MongoTemplate mongoTemplate;
public ModelTest() {
this.references = new ArrayList<Reference>();
}
@Before
public void setUp() {
Reference reference = new Reference();
reference.setId("Ref1");
reference.setTimestamp(new Date());
Metadata met = new Metadata();
met.setId("Mdt1");
met.setUser("user");
met.setCreationTimestamp(new Date());
met.setMetadata("[{'departament': 'JUST'}]");
reference.setMetadata(met);
this.references.add(reference);
mongoTemplate.insert(reference);
}
/**
* Assert Office mime type documents.
*/
@Test
public void office() {
fail("Not yet implemented");
}
}
public class ReferenceWriterConverterTest {
private ReferenceWriterConverter converter;
@Before
public void setUp() {
converter = ReferenceWriterConverter.INSTANCE;
}
//test stuff
}