Jestjs 如何模拟慢速网络连接?

Jestjs 如何模拟慢速网络连接?,jestjs,enzyme,Jestjs,Enzyme,我们正在使用Jest/Enzyme进行反应整合测试。我们有一个组件,它在等待iframe加载时显示一个微调器。在真实的浏览器环境中加载此页面时,微调器将显示为可见。但是,在测试中,微调器不会显示,因为iframe内容是模拟的,而且它们显示得太快,以至于微调器没有时间显示。有没有一种方法可以限制环境,使我们能够根据不同的实际网络速度看到正确的行为?对于使用jest场景的单元测试来说,这似乎有点复杂。如果您的React组件出现在两种不同的状态中—使用微调器加载(状态1)和使用呈现的内容加载(状态2)

我们正在使用Jest/Enzyme进行反应整合测试。我们有一个组件,它在等待iframe加载时显示一个微调器。在真实的浏览器环境中加载此页面时,微调器将显示为可见。但是,在测试中,微调器不会显示,因为iframe内容是模拟的,而且它们显示得太快,以至于微调器没有时间显示。有没有一种方法可以限制环境,使我们能够根据不同的实际网络速度看到正确的行为?

对于使用
jest
场景的单元测试来说,这似乎有点复杂。如果您的React组件出现在两种不同的状态中—使用微调器加载(状态1)和使用呈现的内容加载(状态2)—那么我会设置您的单元测试来分别测试这两种状态,而不用担心模拟网络速度/从一种状态到另一种状态的转换

然而,如果你真的想模拟这样的东西,那么你有一个选择

假设您的组件中有一个属性
isLoaded
,当
false
时,这意味着您的加载状态被呈现。您可以先在加载状态下呈现组件(即将
isLoaded
属性设置为
false
或组件中的任何后续属性),然后执行加载状态测试

然后,完成这些操作后,您可以执行以下操作:

wrapper.setProps({ isLoaded: true });
wrapper.update();
这将更新属性并强制重新渲染,之后您应该能够执行加载状态测试

我仍然建议您在两个状态之间尽可能保持两组测试的独立性,但是如果您仍然希望按顺序从一个状态转换到另一个状态,那么这是一个潜在的选项

单元测试的目的是快速且集中于代码和组件的行为:不模拟真实世界的网络问题或等待事件发生。一旦您的加载状态被单独测试,并且您的加载状态也被单独测试,您就已经证明了在调用时这两种状态都能按预期工作


从单元测试的角度来看,这就是您所需要的。

您是直接运行
jest
,还是通过类似
puppeter
的平台运行?你到底如何“模拟iframe内容”?