Javascript 我们可以使用Jasmine在测试中执行异步操作吗?
我正在与Jasmine一起学习测试,我正在寻找一点关于Javascript 我们可以使用Jasmine在测试中执行异步操作吗?,javascript,unit-testing,jasmine,Javascript,Unit Testing,Jasmine,我正在与Jasmine一起学习测试,我正在寻找一点关于async测试的澄清,以加深我的理解 在下面的代码中,第一个规范中的测试是有效的,但第二个版本中,我在每个之前删除了,并将异步调用移到中,它没有 describe("Working Asnc", function() { var value = 0; function funcRunInBackground() { value = 1; }; function wrapFuncRunInBackground(done) {
async
测试的澄清,以加深我的理解
在下面的代码中,第一个规范中的测试是有效的,但第二个版本中,我在每个之前删除了,并将异步调用移到中,它
没有
describe("Working Asnc", function() {
var value = 0;
function funcRunInBackground() {
value = 1;
};
function wrapFuncRunInBackground(done) {
setTimeout(function() {
funcRunInBackground();
done();
}, 2000);
}
beforeEach(function(done) {
wrapFuncRunInBackground(done);
});
it("should be greater than 0", function() {
expect(value).toBeGreaterThan(0);
});
}))
描述(“不作为NC工作”,函数(){
var值=0
function funcRunInBackground() {
value = 1;
};
function wrapFuncRunInBackground(done) {
setTimeout(function() {
funcRunInBackground();
done();
}, 2000);
}
it("should be greater than 0", function(done) {
wrapFuncRunInBackground(done);
expect(value).toBeGreaterThan(0);
});
}))
如果需要,我们可以从测试本身执行asnc操作吗?
改变
it(“应大于0”,函数(完成){
wrapFuncRunInBackground(完成);
期望(值)。大于(0);
});
到
it(“应大于0”,函数(完成){
wrapFuncRunInBackground(函数(){
期望(值)。大于(0);
完成();
});
});
回调不会暂停执行,因此在原始代码段中,在调用wrapFuncRunInBackground
的异步回调之前,没有任何东西可以阻止运行expect(…)
调用
done
不是魔术,它只是一个普通函数,在调用时将测试标记为已完成…
改变
it(“应大于0”,函数(完成){
wrapFuncRunInBackground(完成);
期望(值)。大于(0);
});
到
it(“应大于0”,函数(完成){
wrapFuncRunInBackground(函数(){
期望(值)。大于(0);
完成();
});
});
回调不会暂停执行,因此在原始代码段中,在调用wrapFuncRunInBackground
的异步回调之前,没有任何东西可以阻止运行expect(…)
调用
done
不是魔术,它只是一个普通函数,在调用时将测试标记为已完成…您不能以这种方式同步js异步代码。您不能等待异步代码在不使用zallbacks/promises/co+generators/等的情况下执行。
在您的情况下,应该是这样的:
it("should be greater than 0", function(done) {
wrapFuncRunInBackground(function(){
expect(value).toBeGreaterThan(0);
done();
});
});
您不能以这种方式同步js异步代码。您不能等待异步代码在不使用zallbacks/promises/co+generators/等的情况下执行。
在您的情况下,应该是这样的:
it("should be greater than 0", function(done) {
wrapFuncRunInBackground(function(){
expect(value).toBeGreaterThan(0);
done();
});
});
太好了,谢谢。我确实试过,但一定是在什么地方漏了一块。太好了,谢谢。我确实试过,但一定是在什么地方漏掉了一块。