Javascript 异步测试是如何在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

我正在尝试使用Jest执行测试。我想了解JEST在以下场景中的行为:

  • 当异步函数传递到测试时
  • 当包含异步代码的同步函数传递给测试时。
  • 请检查以下sippet以供参考

    我想知道测试是否在这两种场景中异步执行

    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”