Testen von Asynchronen Callbacks mit Jasmin
Bin ich mit Jasmin 2.1. Ich bin versucht, Jasmin 2.1 um module zu testen. Eines meiner Module hat eine Funktion, die ausgeführt wird, code asynchron. Ich muss noch getestet werden, das Ergebnis der Funktion, wenn die app fertig ist ausführen. Gibt es eine Möglichkeit, dies zu tun? Derzeit ist mein Modul sieht so aus:
var otherModule = require('otherModule');
function MyModule() {
}
MyModule.prototype.state = '';
MyModule.prototype.execute = function(callback) {
try {
this.state = 'Executing';
var m = new otherModule.Execute(function(err) {
if (err) {
this.state = 'Error';
if (callback) {
callback(err);
}
} else {
this.state = 'Executed';
if (callback) {
callback(null);
}
}
});
} catch (ex) {
this.state = 'Exception';
if (callback) {
callback(ex);
}
}
};
module.exports = MyModule;
Versuche ich zu testen, mein Modul mit dem folgenden:
var MyModule= require('./myModule');
describe("My Module", function() {
var myModule = new MyModule();
it('Execute', function() {
myModule.execute();
expect(myModule.state).toBe('Executed');
});
});
Klar, der test ist nicht die Erwartung der Ausführung auftreten. Wie kann ich testen, eine asynchron ausgeführte Funktion über Jasmin? Darüber hinaus bin ich mit dem Status-variable, richtig? Ich verirre mich in der asynchronen stack und ich bin unsicher, wo ich verwenden kann 'this
'.
InformationsquelleAutor JQuery Mobile | 2014-12-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Empfehle ich einen Blick auf die async Abschnitt der Jasmin-docs. So, mit diesen Informationen können wir eine
done
Rückruf zu warten, für die Ausführung zu beenden, bevor der Test, alles andere, wie diese:expect(...).toBe(...)
im inneren des asynchronen callback?Gerade überprüft, ja, für Jasmin 2.1 funktioniert es einwandfrei. Für Jasmin vor 2.0 die async-Unterstützung sieht völlig anders aus.
ja, Jasmin hat jetzt async-Unterstützung. Es wird warten, bis
done()
genannt wird. (5 Sek. - timeout standardmäßig)InformationsquelleAutor David McMullin