Ich arbeite an einem Knotenprojekt, das elasticsearch verwendet. Meine Testkette ist Schluck, Mokka, Chai, Sinon. Ich habe Schwierigkeiten, meine Integrationstests konsistent zu machen. Ich möchte Beispieldaten in die Datenbank laden und dann einige Tests ausführen. Ich glaube, dass ich Probleme habe, weil die Dokumente, die ich lade, zu dem Zeitpunkt nicht indiziert sind, zu dem meine Tests, die sie benutzen, laufen.Wie gehe ich mit elasticsearchs Index-Timing um, wenn ich Integrationstests mit Mocha durchführe
Ich habe um das funktioniert durch folgende Maßnahmen:
before(function (done) {
testData.simpleLoadData(100, 2000);
setTimeout(function() {
done();
}, 5000);
});
Dies funktioniert vor Ort in Ordnung, es funktioniert gelegentlich auf travis. Wenn ich den Timer auf 10000 hochsetze, funktioniert es im Allgemeinen an beiden Orten.
Gibt es einen Weg dazu, ohne auf setTimeouts im Testcode zurückgreifen zu müssen? Der manuelle Umgang mit dem Timing macht mich etwas zimperlich.
Ist manuell mit Zeitüberschreitungen die beste Option, die ich habe oder gibt es bessere Möglichkeiten?
Hinweis: Dies sind Integrationstests und ich möchte explizit die externen Abhängigkeiten verwenden. Ich habe Komponententests, die nicht auf die Datenbank angewiesen sind.
so wird die Aktualisierung blockiert bis abgeschlossen? Ich habe meinem Speicherobjekt gerade eine Aktualisierungsmethode hinzugefügt, um damit herumzuspielen. Danke, ich werde mich heute Nacht damit herumschlagen und berichten. – skarface
@skarfa yep, es wird blockieren! :) – Zach
relevanten Code hier: http://pastebin.com/9GVWptpN Daten scheinen nicht verfügbar sein, nachdem RefreshIndices abgeschlossen ist. Immer noch ziemlich neu für den Knoten, Entschuldigung, wenn ich etwas Grundlegendes vermisse – skarface