Javascript 异步测试是如何在Jest中执行的
我正在尝试使用Jest执行测试。我想了解JEST在以下场景中的行为:Javascript 异步测试是如何在Jest中执行的,javascript,node.js,typescript,jestjs,Javascript,Node.js,Typescript,Jestjs,我正在尝试使用Jest执行测试。我想了解JEST在以下场景中的行为: 当异步函数传递到测试时 当包含异步代码的同步函数传递给测试时。 请检查以下sippet以供参考 我想知道测试是否在这两种场景中异步执行 it('should do async stuff...', async () => { const result = await doSomething(); expect(result).toBe('value'); }) it('should do async s
it('should do async stuff...', async () => {
const result = await doSomething();
expect(result).toBe('value');
})
it('should do async stuff...', () => {
async () => {
const result = await doSomething();
expect(result).toBe('value');
}();
})
提前感谢,因为第二个测试的功能没有声明为
异步
,它将同步运行。将执行自调用函数,但Jest将在任何事情发生之前关闭执行范围
通过以下扩展代码段的代码,您可以自己清楚地看到它:
异步函数doSomething(ms){
返回新承诺((解决)=>
设置超时(()=>{
决定(“价值”);
},ms)
);
}
描述(“比较异步测试”,()=>{
它(“测试1”,异步()=>{
常数结果=等待剂量测定(2000);
log(“测试1”,{result});
期望(结果)toBe(“价值”);
});
它(“测试2”,()=>{
(异步()=>{
常数结果=等待剂量测量(1000);
log(“测试2”,{result});
期望(结果)toBe(“价值”);
})();
});
});
运行上面的测试会将这两个测试都标记为成功,但您只能在控制台输出中看到“test1”