Timer Jest简单异步等待,计时器不工作

Timer Jest简单异步等待,计时器不工作,timer,async-await,jestjs,settimeout,Timer,Async Await,Jestjs,Settimeout,我正在尝试使用setTimeout进行一个简单的异步/等待测试,但在运行它时什么也没有发生: const testing = async () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve('result'); }, 500); }); } jest.useFakeTimers() it('tests

我正在尝试使用setTimeout进行一个简单的异步/等待测试,但在运行它时什么也没有发生:

const testing = async () => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('result');
        }, 500);
    });
}

jest.useFakeTimers()

it('tests async await', async () => {
    const r = await testing();
    expect(r).toBe('result');

    jest.runAllTimers();
});
我可以像在《茉莉花》中那样使用真实的setTimeout,但这似乎是开玩笑的,你必须使用假的setTimeout。所以我确实包括了
jest.useFakeTimers()
jest.runAllTimers()
,但这并没有解决问题

测试被卡住了,永远不会完成。知道问题出在哪里吗?

试试下面的方法:

it('tests async await', async () => {
    jest.useFakeTimers();
    testing = async () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve('result');
        }, 500);
      });
    };
    const asyncResult = testing();
    jest.runAllTimers();
    const r = await asyncResult;
    expect(r).toBe('result');
});
请尝试以下操作:

it('tests async await', async () => {
    jest.useFakeTimers();
    testing = async () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve('result');
        }, 500);
      });
    };
    const asyncResult = testing();
    jest.runAllTimers();
    const r = await asyncResult;
    expect(r).toBe('result');
});