2016-05-30 15 views
0

Ich habe eine reguläre Spring Boot-Anwendung (1.3.2) mit MongoDB mit MongoRepository.Spring Boot MongoRepository Unit-Test mit vorinstalliertem MongoDB

Ich möchte einen Integrationstest für einen meiner Endpunkte schreiben, der die Daten von der MongoDB erhält. So weit ich sehe von der Spring Boot 1.3 Release Notes Feder hat automatische Konfiguration für Embedded MongoDB (de.flapdoodle.embed.mongo). Ich kann jedoch nicht aus der Spring- und der plappdoodle-Dokumentation herausfinden, wie man einen Integrationstest schreibt, der die bereits installierte Version von MongoDB auf meinem Dateisystem verwendet.

Bisher sieht meine Integrationstest wie folgt aus:

@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 
    } 
} 

ich zwei Abhängigkeiten mit test Umfang hinzugefügt haben: spring-boot-starter-test und de.flapdoodle.embed:de.flapdoodle.embed.mongo. Wenn ich also den Test starte, kann ich sehen, dass Lappendoodle versucht, die Version von MongoDB herunterzuladen, aber es scheitert, da ich hinter dem Proxy bin. Aber ich möchte keine Versionen herunterladen, ich möchte meine lokal installierte MongoDB verwenden. Ist es möglich, dies zu tun?

+0

hast du mit diesen getan. – devanathan

Antwort

0

Wenn Sie Ihre lokal installierte MongoDB verwenden möchten (nicht empfohlen, da die Tests von einer bestimmten Datenbank abhängen, die in einen fehlerhaften Zustand versetzt werden kann), sollten Sie die eingebettete MongoDB nicht verwenden.

Ich glaube, das Config tun, was Sie fragen nach, obwohl (scheint in meinem Frühling Boot-1.3.5-Test zu arbeiten):

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); 
     } 
    } 
} 

Allerdings vermute ich Sie wäre richtig besser dran Konfiguration der Proxy und die Verwendung der eingebetteten mongoDB in Ihren Tests. Hinweise dazu finden Sie unter this answer.