将mongodb
与Spring Data MongoDB后端一起使用。也使用Mongo存储库。
这是我的实际配置:
/** MONGO CLIENT *****************************************************/
@Override
protected String getDatabaseName() {
return db;
}
@Override
public Mongo mongo() throws Exception {
/* I'm so dump to automatize this that I just do it manually */
return new Fongo("meh").getMongo(); //Using it for unit tests
//return new MongoClient(url, port); //Using it for IT
}
@Override
protected Collection<String> getMappingBasePackages() {
return Arrays.asList("com.foo");
}
/** BEANS ************************************************************/
@Bean
public Jackson2RepositoryPopulatorFactoryBean repositoryPopulator() {
Resource foo1 = (Resource) new ClassPathResource("collections/foo1.json");
Resource foo2 = (Resource) new ClassPathResource("collections/foo2.json");
Jackson2RepositoryPopulatorFactoryBean factory = new Jackson2RepositoryPopulatorFactoryBean();
factory.setResources(new Resource[] { foo1, foo2 });
return factory;
}
The repository populator is what I added这就是让我烦恼的原因。
当我编译并测试我的项目时,我得到DuplicateKeyException
,因为我猜存储库填充程序不止一次触发。
这些是我在测试类中使用的注释:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
我的申请配置得好吗?什么是避免存储库填充程序多次触发的合理解决方案?
答案 0 :(得分:1)
基于本指南的解决方案(西班牙语,抱歉):https://www.paradigmadigital.com/dev/tests-integrados-spring-boot-fongo
test/
从指南中选择example code(并使用MongoConfiguration.java,我的实际配置错误)作为基础,你会没事的。