我有以下Spring Boot配置类,以便在我们的MongoDB中创建索引:
@Configuration
@DependsOn("mongoTemplate")
@Profile({ "!test" })
public class CollectionsConfig {
private final MongoTemplate mongoTemplate;
@Autowired
CollectionsConfig(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@PostConstruct
public void initIndexes() {
mongoTemplate.indexOps("db-name"); // collection name string or .class
.ensureIndex(
new Index().on("fechaAlta", Sort.Direction.ASC).expire(15552000)
);
}
}
既然这个类没有创建任何bean或类似的东西,我怎么测试这个呢?我已经看到了配置类的例子,它们使用应用程序上下文来测试是否创建了bean,但是我在这里没有创建任何bean,所以我不知道该怎么做才能运行这段代码。
请帮助。
我认为测试此配置的一种有意义的方法是验证@PostConstruct
注释方法的副作用。
例如,您可以让@SpringBootTest
加载此配置,然后让您的测试验证在您的嵌入式版本mongodb上fechaAlta
上的索引已成功创建。
选择
将编写一个测试,其中手动实例化CollectionsConfig
,将模拟的MongoTemplate
实例传递给它,手动调用@PostConstruct
注释的方法,并最终验证与MongoTemplate
的预期交互是满意的。