reactjs 无法使用vitest advanceTimersByTime运行已删除的reaction onChange

r8xiu3jd  于 2023-08-04  发布在  React
关注(0)|答案(1)|浏览(72)

我有下面的测试


的数据
我正在一个可重用的文本字段上运行,该字段有一个如下所示的去抖动函数(代码略有修剪)



出于某种原因,尽管使用vitest.useFakeTimers(),我仍然得到下面的错误。除此之外,去抖是500ms,测试是2000ms,还有什么我遗漏了吗?

Error: Timers are not mocked. Try calling "vi.useFakeTimers()" first.

 act(() => {
    vi.advanceTimersByTime(2000);
      ^
});

字符串

tzdcorbm

tzdcorbm1#

这样的东西起作用了

function delay(timeout: number | undefined) {
    return new Promise((resolve) => {
        setTimeout(resolve, timeout);
    });
}

字符串
试验,试验

test('should render task name', async () => {
        const { getByTestId } = render(<Wrapper />);
        const taskName = await waitFor(() => getByTestId('task').querySelector('input'));
        const taskNameTextfield = taskName as HTMLInputElement;
        fireEvent.input(taskNameTextfield, {
            target: {
                value: 'task'
            }
        });

        await act(async () => {
            await delay(1000);
        });
        
        await waitFor(() => expect(taskNameTextfield.value).toEqual('task'));
    });

相关问题