[英]Testing Asynchronous Callbacks with Jasmine
我正在使用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();
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.