【发布时间】:2021-02-18 15:12:37
【问题描述】:
我正在对一个函数进行单元测试,该函数在其中调用另一个异步任务而无需等待。原因是我不想等待那个函数执行。
const fn1 = async () => {
fn2();
return 'foo';
};
const fn2 = async () => {
await fn3();
await fn4();
};
const fn3 = async () => {
await s3.upload(params).promise();
};
const fn4 = async () => {
await s3.upload(params).promise();
};
我想对 fn1() 和 fn2() 进行单元测试,这是一个异步任务,这是我尝试过的:
describe("unit test fn1", () => {
let s3Stub;
beforeEach(() => {
s3Stub = sinon.stub(S3, "upload");
});
afterEach(() => {
s3Stub.restore();
});
it("fn1 test" , async () => {
const actualValue = await fn1();
expect(s3Stub.calledTwice).to.be.true;
});
});
理想情况下,s3Stub 应该被调用两次,但只被调用一次,我的测试就完成了。
我不想在 fn2() 上使用 await,因为我希望 fn2() 作为独立线程运行。关于我们如何对此类案例进行单元测试有什么想法吗?
【问题讨论】:
标签: javascript unit-testing mocha.js sinon sinon-chai