Konfigurieren & verwenden mongodb mockup-server für unit-Tests
Habe ich an der Entwicklung einiger Junit-tests für Java-code mit einer MongoDB speichern. Gibt es irgendein framework/library, die es mir erlaubt die Initialisierung einer mock in-memory-MongoDB server?
(Die Idee ist, zu testen nur den code selbst, das heißt, in jeder Maschine unabhängig auf, wenn MongoDB installiert ist & wird ausgeführt).
Vielen Dank im Voraus!
- Könntest du nicht einfach eine lokale MongoDB installieren? Es ist ziemlich leicht... Oder.. ein hosted mongo? mongohq.com zum Beispiel?
- das ist, wie ich es jetzt tun (lokale Mongo). das problem ist, dass es bereitgestellt und getestet in ein continous integration server, das heißt, die tests werden regelmäßig getestet werden, die Maschine. Die Bereitstellung einer MongoDB-server auf dieser Maschine ist keine option (außer, wenn ein unit-test verwendet externe Ressourcen, wie ein hosted service oder ein Datenbank-server wird es nicht deterministisch sein, mehr auch nicht, da diese Dienste stay out of control).
- Für diejenigen, die darauf hindeutet, um die Verbindung zu einem bestehenden Mongo, ich glaube, Ruben, ist zu Fragen, für etwas, das ähnlich wie die H2-Datenbank verwendet werden kann. Es kann sein, "embedded" in Ihren unit-tests.
Du musst angemeldet sein, um einen Kommentar abzugeben.
fongo könnte das sein, was du suchst.
Schrieb ich eine MongoDB fake-Implementierung in Java: mongo-java-server (siehe diese Antwort).
Sind wir eigentlich die Arbeit an einem solch ein test-system, und es ist durchaus machbar. In unserem Ansatz, unser test-framework erweitert die standard-test-case-Klasse (JUnit in unserem Fall aber TestNG scheint mehr in der Lage ist), dass setzt und reißt die verschiedenen Datenbank-Abhängigkeiten mit jedem test mit den folgenden Schritten :
Test-Suite-Setup
1) Start des mongod-Prozess (wir verwenden ProcessBuilder, speichern Prozess-Instanz)
Test-Setup :
2) starten Sie mongo mit einer test-spezifischen .js-Datei zu erzeugen, die anfänglichen Daten im Zustand
Test
3) Run test
Test Teardown
4) Drop database
Test-Suite Teardown
5) Stop mongod-Prozess (Prozess -.destroy())
Da das starten und stoppen mongod ist die einzige zeitaufwändige Sache, würde ich dringend empfehlen dies zu tun, so wenig wie möglich. Vorzugsweise einmal für die gesamte test-suite. Unser Zeug ist noch nicht fertig, aber die ersten Ergebnisse sind positiv. Ich glaube nicht, dass viele alternativen zur Verfügung stehen. Keine mongo-mock-Bibliothek ist verfügbar zum Zeitpunkt des Schreibens und mongod nicht über eine in-memory - /embedded-Modus.
sudo mongod
vor jedem test von node js? Wie zur Umgehung dersudo
Anforderung?Nicht wirklich, Sie zu tun haben, dass Art der Sache, die sich in Ihrer Anwendung Schichten. Wenn Sie Morphia Sie können jedes mock-framework mit dem service-Layer, die Sie mögen (da sind die Objekte nur POJOs), aber es wird nichts an der db - /Treiber-Ebene um Ihnen zu helfen.
Viele Menschen nutzen Sie einfach eine lokale dev. mongodb-Instanz mit einem Satz von Testdaten, da es so schnell. Ich kenne Leute, die laden der Testdaten für jeden test, wie das kopieren einer Datenbank mit gefälschten/test Daten.
Als Teil der test-fixture setup, löschen Sie die Datenbank, und füllen Sie es mit einem Standard-test-Daten.