2016-05-30 8 views
0

私はMongoRepositoryを使用しているMongoDBの通常のSpringブートアプリケーション(1.3.2)を持っています。スプリングブートMongoDBをプレインストールしたMongoRepositoryユニットのテスト

MongoDBからデータを取得するエンドポイントの統合テストを作成したいと思います。限り、私はSpring Boot 1.3 Release Notesから見ると、Embedded MongoDBde.flapdoodle.embed.mongo)の自動設定があります。しかし、すでにインストールされているバージョンのMongoDBをファイルシステムに使用する統合テストを作成する方法については、Springとflapdoodleのドキュメントから分かりません。

は、これまでのところ、私の統合テストは、次のようになります。spring-boot-starter-testde.flapdoodle.embed:de.flapdoodle.embed.mongo

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(Application.class) // my application class 
@WebAppConfiguration 
public class IntegrationTest { 

    @Autowired 
    private MyRepository myRepository; 

    @Before 
    public void setup() { 
     myRepository.save(new MyEntity()); 
    } 

    @Test 
    public void test() { 
     // here I will fire requests against the endpoint 
    } 
} 

私はtestスコープを持つ2つの依存関係を追加しました。だから私がテストを実行すると、フラップドールがMongoDBのバージョンをダウンロードしようとしているのを見ることができますが、プロキシの背後にいるので失敗します。しかし、私はバージョンをダウンロードしたくないので、ローカルにインストールしたMongoDBを使用したいと思っています。これは可能ですか?

+0

これらはあなたが行っていますか? – devanathan

答えて

0

ローカルにインストールされたMongoDBを使用する場合(推奨されていませんが、テストは特定のDBに依存します)、MongoDBを埋め込むべきではありません。

私は(私の春のブート1.3.5テストで動作しているようです)にもかかわらず、この設定は、あなたが求めているものを行うだろうと考えている。

import java.net.UnknownHostException; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Primary; 
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; 
import com.mongodb.MongoClient; 

@EnableAutoConfiguration(exclude = MongoAutoConfiguration.class) 
@Configuration 
public class TestConfig 
{ 
    @Primary 
    @Bean 
    MongoClient mongoClient() 
    { 
     try 
     { 
      return new MongoClient("localhost", 27017); 
     } 
     catch (UnknownHostException e) 
     { 
      throw new RuntimeException(e); 
     } 
    } 
} 

しかし、私はあなたが適切に設定したほうが良いでしょう疑いプロキシとあなたのテストで埋め込まれたmongoDBを使用します。方法のヒントについては、this answerを参照してください。

関連する問題