{ -6ren">
gpt4 book ai didi

node.js - Mocha 调用所有 "it"回调模拟(测试中间件)

转载 作者:行者123 更新时间:2023-12-05 05:31:04 25 4
gpt4 key购买 nike

我尝试在 mocha 中测试一个中间件。问题是,所有“it”调用都在等待前一个调用完成,然后再执行它们的回调。

it(`should trigger pre hook 1`, (done) => {
use((next) => {
setTimeout(() => {
done();
next();
}, 1000);
});
});

it(`should trigger pre hook 2`, (done) => {
use((next) => {
setTimeout(() => {
done();
next();
}, 1000);
});
});

start(() => {
// middleware done
});

第二个 it(...) 等待第一个完成。
这正是问题所在,因为第二个 use(...) 在我触发 start(...) 函数之前没有被调用,所以它永远不会被执行并且测试失败。

我如何告诉 mocha 执行所有“it”回调而不等待前一个回调完成(或失败)?

最佳答案

试试spy而不是 done,这样您就可以根据需要布置测试,而无需依赖 mocha 来控制流程。

describe('middleware', function(){

// initialise use/start for this test

const m1 = sinon.spy()
const m2 = sinon.spy()
use((next) => {
setTimeout(() => {
m1();
next();
}, 1000);
});
use((next) => {
setTimeout(() => {
m2();
next();
}, 1000);
});

it(`should process a request through middleware`, function(done){
start(() => {
// middleware done
expect(m1.calledOnce, `m1`).to.equal(true)
expect(m2.calledOnce, `m2`).to.equal(true)
done()
});
})

})

当您在中间件中有功能代码时, spy 还可以让您检查中间件中更复杂的调用场景。

关于node.js - Mocha 调用所有 "it"回调模拟(测试中间件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74452761/

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