Używam Jasmine 2.1. Próbuję użyć Jasmine 2.1, aby przetestować moduł. Jeden z moich modułów ma funkcję, która wykonuje asynchronicznie kod. Muszę przetestować wynik działania, gdy aplikacja zostanie wykonana. Czy jest jakiś sposób na zrobienie tego? Obecnie mój moduł wygląda następująco:Testowanie asynchronicznych wywołań zwrotnych za pomocą Jasmine
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;
Próbuję przetestować moduł z następujących czynności:
var MyModule= require('./myModule');
describe("My Module", function() {
var myModule = new MyModule();
it('Execute', function() {
myModule.execute();
expect(myModule.state).toBe('Executed');
});
});
Oczywiste jest, że test nie jest w oczekiwaniu na wystąpienie wykonanie. Jak przetestować wykonaną asynchroniczną funkcję za pomocą Jasmine? Ponadto, czy poprawnie używam zmiennej stanu? Zgubiłem się w asynchronicznym stosie i nie jestem pewien, gdzie mogę użyć "this
".
Czy jesteś pewien, że możemy użyć 'oczekiwać (...) Tobe (... .) 'wewnątrz asynchronicznego wywołania zwrotnego? –
Właśnie sprawdziłem, tak, dla Jasmine 2.1 to działa dobrze. Dla jaśminu przed 2.0 asynchroniczne wsparcie wygląda zupełnie inaczej. –
@VlasBashynskyi tak, jaśmin ma teraz asynchroniczne wsparcie. Będzie czekać, aż zostanie wywołane 'done()'. (Domyślnie 5-sekundowy limit czasu) – Hlung