{ const-6ren">
gpt4 book ai didi

reactjs - Jest/Enzyme 测试中的 setTimeout

转载 作者:行者123 更新时间:2023-12-03 13:35:46 25 4
gpt4 key购买 nike

这是我的代码块:

   it("saving flow (entering into edit mode and saving) works correctly", (done) => {

const wrapper = mount(
<Root>
<DictionaryRooms/>
</Root>
);

moxios.wait(() => {
wrapper.update();


wrapper.find('.btn-dark').at(1).simulate('click');

setTimeout(() => {
expect(wrapper.find('.editField span').at(0).text().trim()).toEqual(jsonDataRooms.data[0].name);
}, 1000);

done();
wrapper.unmount();
})

});

正如您所看到的,我正在模拟单击按钮,这在我的应用程序中会导致从后端服务器下载一些新数据。这些数据在我的后端数据进来后就可见,然后就会显示出来。因此,在我的请求完成后,我再次尝试检查新数据是否是我期望的数据。显然,点击后需要时间下载,过一段时间就会显示。这就是为什么我需要像 setTimeout 这样的东西。但这是行不通的。不知道为什么...

感谢您的任何建议。

最佳答案

setTimeout() 的调用会将回调排队,但测试继续同步执行并调用 done()wrapper.unmount() 在回调有机会执行之前。

setTimeout() 回调中调用这些:

setTimeout(() => {
expect(wrapper.find('.editField span').at(0).text().trim()).toEqual(jsonDataRooms.data[0].name);
wrapper.unmount();
done();
}, 1000);

测试可能存在其他问题(未提供正在测试的代码),但进行更改将使您更接近。您可能也不需要等待一秒钟,使用 0 超时可能就足够了(可能有一个排队回调只需要在 expect 之前执行)。

关于reactjs - Jest/Enzyme 测试中的 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51769254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com