我正在使用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 docs的async部分。因此,利用此信息,我们可以使用done
回调函数来等待执行完成,然后再测试任何内容,例如:
var MyModule= require('./myModule');
describe("My Module", function() {
var myModule = new MyModule();
it('Execute', function(done) {
myModule.execute(function(){
expect(myModule.state).toBe('Executed');
done();
});
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句