Asynchrone mongodb-Aufrufe in Nodejs mit Jasmine-Node testen

8

Ich benutze Jasmine-Node, um Tests gegen meine Nodejs-Funktionen auszuführen. Da ich neu bei nodejs und mongodb bin, habe ich zuerst einige Datenbankaufrufe getestet und bin sofort wegen der asynchronen Natur von nodejs hängengeblieben.

Was ich machen möchte ist:

1) Fügen Sie eine add -Funktion hinzu, um neue Einträge zu einer mongodb-Tabelle hinzuzufügen

2) Empfangen Sie eine Statuszeichenfolge von dieser Funktion, um den Status der Aktion zu überprüfen

Das Folgende ist der Code meiner Spezifikation. Im beforeEach Aufruf initialisiere ich die Datenbank. Wie Sie in der Implementierung sehen können, wird es nur einmal instanziiert, weil eine Bedingung fragt, ob es bereits existiert.

%Vor%

Jetzt kann ich für jede Datenbankabfrage eine Callback-Funktion definieren, die ausgeführt wird, wenn die Abfrage erfolgreich ausgeführt wurde. Was ich nicht weiß, wie zu erreichen ist, liefert das Ergebnis aus dem mongodb Callback zurück die Spezifikation.

Dies ist die aktuelle Implementierung der Datenbankfunktionen:

%Vor%

Ich bin auch offen für andere Ansätze zum Testen von Datenbankaufrufen in mongodb. Ich habe eine Reihe von Artikeln zu diesem Thema gelesen, aber keiner von ihnen deckt meinen speziellen Fall ab.

LÖSUNG

Schließlich und mit der Hilfe von JohnnyHK's Antwort, habe ich es geschafft, es mit einem Rückruf arbeiten zu lassen. Sehen Sie sich den folgenden Testfall an, um zu verstehen, was ich getan habe:

%Vor%     
Marcel Kalveram 23.09.2012, 10:41
quelle

2 Antworten

3

Sie müssten die Methode add so ändern, dass ein Rückrufparameter akzeptiert wird, damit das asynchrone Ergebnis über diesen Rückruf an den Aufrufer gesendet werden kann:

%Vor%     
JohnnyHK 24.09.2012, 18:25
quelle
13

Sie können dies jetzt viel sauberer mit der Funktion done in Jasmine-node tun:

%Vor%

Dieser Test wartet, bis done() asynchron aufgerufen wird. Es gibt ein Standard-Zeitlimit von 5 Sekunden, nach dem Ihr Test fehlschlägt. Sie können dies beispielsweise in 15 Sekunden ändern:

%Vor%     
jab 23.05.2013 16:59
quelle

Tags und Links