Я использую Jasmine 2.1. Я пытаюсь использовать Jasmine 2.1 для тестирования модуля. Один из моих модулей имеет функцию, выполняющую асинхронный код. Мне нужно проверить результат функции, когда приложение выполнено. Есть ли способ сделать это? В настоящее время мой модуль выглядит следующим образом:Тестирование асинхронных обратных вызовов с жасмином
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;
Я пытаюсь проверить мой модуль со следующим:
var MyModule= require('./myModule');
describe("My Module", function() {
var myModule = new MyModule();
it('Execute', function() {
myModule.execute();
expect(myModule.state).toBe('Executed');
});
});
Очевидно, что тест не ожидает для выполнения произойти. Как проверить асинхронную выполняемую функцию через Jasmine? Кроме того, я использую переменную состояния правильно? Я теряюсь в асинхронном стеке, и я не уверен, где я могу использовать 'this
'.
Вы уверены, что мы можем использовать 'ожидать (...) Тоба (... .) 'внутри асинхронного обратного вызова? –
Только что проверил, да, для Jasmine 2.1 он отлично работает. Для жасмина до 2.0 асинхронная поддержка выглядит совершенно другой. –
@ VlasBashynskyi да, жасмин теперь имеет асинхронную поддержку. Он будет ждать, пока вызывается 'done()'. (По умолчанию - 5 секунд) – Hlung