Ich schreibe Unit-Tests für meine Funktion, die Informationen von einer REST-API abruft. Ich verwende ramda
Future
Typ (source).
Der folgende Test funktioniert seltsam:Chai 'expect' wird nicht innerhalb eines Callbacks ausgeführt
it('should return Maybe of Nothing', done => {
let response = {
status: 200,
json:() => {
return {
results: []
}
}
}
let fakeFetch = {
fetch:() => {
return new Promise((resolve, reject) => {
resolve(response)
})
}
}
// String -> Future Error Maybe
let result = Utils.fetchGiantBomb(faker.random.word(), fakeFetch.fetch);
result.fork(err => {
assert.fail(err, 'expected to return Maybe of Nothing');
done();
}, data => {
expect(Maybe.isJust(data)).to.be.true;
done();
})
})
data
Maybe.Nothing
vom Typ sein sollte. Wenn ich Maybe.isNothing
erwarte den Test besteht, aber ich möchte sehen, was passiert, wenn der Test fehlschlägt, so setze ich es auf Maybe.isJust
, die falsch zurückgeben. Nachdem ich dies eine Weile beobachtet habe, habe ich bemerkt, dass, wenn die expect
fehlgeschlagen ist, es auf die Fehlerbehandlung (err
Callback) hochspringt, die dann nur die Ausführung einer Assertion stoppen (was zu einem 2000ms Timeout führt).
In den Future
Quellen sah ich, dass, wenn der Erfolg Rückruf fehlschlägt, führt es den Fehler Callback. Wie kann ich diesen Test abschließen, damit angezeigt wird, dass die Daten nicht den Erwartungen entsprechen?