Ich bin sehr neu zu Komponententests, Mocha und should.js, und ich versuche, einen Test für eine asynchrone Methode zu schreiben, die ein Versprechen zurückgibt. Hier ist mein Testcode:should.js nicht Mocha-Test fehlschlagen
var should = require("should"),
tideRetriever = require("../tide-retriever"),
moment = require("moment"),
timeFormat = "YYYY-MM-DD-HH:mm:ss",
from = moment("2013-03-06T00:00:00", timeFormat),
to = moment("2013-03-12T23:59:00", timeFormat),
expectedCount = 300;
describe("tide retriever", function() {
it("should retrieve and parse tide CSV data", function() {
tideRetriever.get(from, to).then(
function(entries) { // resolve
entries.should.be.instanceof(Array).and.have.lengthOf(expectedCount);
},
function(err) { // reject
should.fail("Promise rejected", err);
}
);
});
});
Wenn ich manuell die tideRetriever.get
Methode testen, es löst konsequent eine Reihe von 27 Elementen (wie erwartet), aber der Test wird nicht unabhängig von dem Wert von expectedCount
scheitern. Hier ist mein einfacher manueller Test:
tideRetriever.get(from, to).then(
function(entries) {
console.log(entries, entries.length);
},
function(err) {
console.log("Promise rejected", err);
}
);
kann ich auch schreibe die Quelle für das Modul getestet werden, wenn es notwendig ist.
Verstehen Sie etwas über Mocha oder should.js? Jede Hilfe würde sehr geschätzt werden.
Sie haben vergessen, "done" als Parameter der Funktion hinzuzufügen – Chaoste
@Chaoste danke, behoben. –