2017-05-30 10 views
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 

は、それはよく私のアプリケーションを設定されていますか?リポジトリポピュレータが複数回トリガされるのを避けるための妥当な解決策は何ですか? (スペイン語、申し訳ありませんで)このガイドに基づいて

+1

あなたは何をしようとしているのかを明確にしてください。人々が代替/よりよい解決法を提案できるようにテストケースを実行する前に、メモリムンゴ(Fongo)を使っていくつかのサンプルjsonファイルを使ってテストを作成しようとしていますか? – pvpkiran

+0

@pvpkiranいいえ、単体テストを実行すると、私のデータベースは必要ありません。 (Fondo()の代わりに 'MongoClient()を使用して)データベースを必要とする統合テストを実行すると、集団が複数回実行されるためDuplicateKeyExceptionが表示されます – anat0lius

+0

実際には、私は自分のデータベースを "静的"なものにしたい、彼らは時間の経過とともに変化するエンティティではありません。だから、基本的に私はこれらのコレクションを空にしている唯一のケースにロードしたいと思っています – anat0lius

答えて

0

ソリューション:https://www.paradigmadigital.com/dev/tests-integrados-spring-boot-fongo

  1. はモンゴから設定fongo分離するのに必要とされています。
  2. fongo構成はジャストベースとしてガイドからexample code(とあまりにもMongoConfiguration.javaを使用して、私の実際の設定が間違っている)を取ると、あなたは罰金になりますtest/

の上に配置する必要があります。

関連する問題