如何模拟慢速网络连接?

时间:2019-07-18 16:33:19

标签: jestjs enzyme

我们在反应集成测试中使用了 Jest /酶。我们有一个组件,它在等待加载iframe时显示微调框。在实际的浏览器环境中加载此页面时,微调器会明显显示。但是,在 test 中,由于iframe内容已被模拟,并且没有显示,因此没有显示微调器。有没有一种方法可以限制环境,以便我们可以根据不同的实际网络速度看到正确的行为?

1 个答案:

答案 0 :(得分:0)

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

但是,如果您确实想模拟这样的东西,那么您确实可以选择。

假设组件中有一个属性isLoaded,当false表示呈现加载状态时,该属性为isLoaded。您可以按照在加载状态下呈现组件的方式进行操作(例如,将false属性设置为wrapper.setProps({ isLoaded: true }); wrapper.update(); 或组件中任何后续属性),然后执行加载状态测试。

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

{{1}}

这将更新您的媒体资源并强制重新渲染,之后您应该可以进行加载状态测试。

我仍然建议您在这两种状态之间尽可能地保持两组测试的独立性,但是如果您仍希望继续从一种状态转换到另一种状态,这对您来说是一个潜在的选择。

单元测试旨在快速并且专注于代码和组件的行为:不模拟现实世界中的网络问题或等待事件发生。分别测试了加载状态和加载状态之后,就证明了两种状态在被调用时都可以按预期工作。

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