Jest 使用 Mock Service Worker (MSW) 或其他模拟离线网络?

Posted

技术标签:

【中文标题】Jest 使用 Mock Service Worker (MSW) 或其他模拟离线网络?【英文标题】:Jest simulate offline network with Mock Service Worker (MSW) or other? 【发布时间】:2021-06-04 02:16:51 【问题描述】:

是否可以将 MSW 与 Jest 一起使用来模拟离线网络条件?或者,非基于 MSW 的解决方案就足够了。我也不想模拟navigator.onLine,因为我想在网络请求因离线而失败时测试错误路径。

【问题讨论】:

为什么不呢? Jest 在 Node 环境中运行。它不关心网络。如果您可以在 Node 中运行 MSW,则可以使用它。你检查mswjs.io/docs/getting-started/integrate/node了吗? 我知道 MSW 是开玩笑的,我正在尝试确定如何模拟离线网络? 【参考方案1】:

是的,您可以模拟网络错误:

rest.get('/user', (_, res) => 
  return res.networkError('Custom network error message')
)

这里是相关文档:https://mswjs.io/docs/api/response/network-error

【讨论】:

这是推荐的方法:网络错误相当于请求资源离线时发生的错误。

以上是关于Jest 使用 Mock Service Worker (MSW) 或其他模拟离线网络?的主要内容,如果未能解决你的问题,请参考以下文章

jest中的mock,jest.fn()jest.spyOn()jest.mock()

jest中的mock,jest.fn()jest.spyOn()jest.mock()

使用 jest.mock('axios') 时如何模拟拦截器?

使用 Jest 模拟的服务导致“不允许 jest.mock() 的模块工厂引用任何超出范围的变量”错误

如何使用 jest.mock 模拟 useRef 和反应测试库

Jest 使用指南 - - Mock 篇