JQu*_*ile 6 javascript asynchronous 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;
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下方法测试我的模块:
var MyModule= require('./myModule');
describe("My Module", function() {
var myModule = new MyModule();
it('Execute', function() {
myModule.execute();
expect(myModule.state).toBe('Executed');
});
});
Run Code Online (Sandbox Code Playgroud)
显然,测试不等待执行发生.如何通过Jasmine测试异步执行的函数?另外,我是否正确使用状态变量?我迷失在异步堆栈中,我不确定在哪里可以使用' this'.
我建议看看茉莉花文档的异步部分.因此,通过这些信息,我们可以使用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();
});
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13556 次 |
| 最近记录: |