gpt4 book ai didi

javascript - 使用 Jasmine 测试异步回调

转载 作者:数据小太阳 更新时间:2023-10-29 05:12:23 26 4
gpt4 key购买 nike

我正在使用 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”。

最佳答案

我建议您查看 async section of the jasmine docs .因此,有了这些信息,我们可以使用 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();
});
});
});

关于javascript - 使用 Jasmine 测试异步回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27344872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com