0
mongodb
をSpringデータMongoDBバックエンドで使用する。 Mongoリポジトリも使用する。Spring Bootアプリケーションを正しく設定するにはどうしたらいいですか?
これは私の実際の構成である。
/** 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
は、それはよく私のアプリケーションを設定されていますか?リポジトリポピュレータが複数回トリガされるのを避けるための妥当な解決策は何ですか? (スペイン語、申し訳ありませんで)このガイドに基づいて
あなたは何をしようとしているのかを明確にしてください。人々が代替/よりよい解決法を提案できるようにテストケースを実行する前に、メモリムンゴ(Fongo)を使っていくつかのサンプルjsonファイルを使ってテストを作成しようとしていますか? – pvpkiran
@pvpkiranいいえ、単体テストを実行すると、私のデータベースは必要ありません。 (Fondo()の代わりに 'MongoClient()を使用して)データベースを必要とする統合テストを実行すると、集団が複数回実行されるためDuplicateKeyExceptionが表示されます – anat0lius
実際には、私は自分のデータベースを "静的"なものにしたい、彼らは時間の経過とともに変化するエンティティではありません。だから、基本的に私はこれらのコレクションを空にしている唯一のケースにロードしたいと思っています – anat0lius