问题标签 [msw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
295 浏览

javascript - 麻烦设置一个下降的 msw(模拟服务工作者)并让它抛出

到目前为止,我得到的组件如下所示:

我对 TDD 的尝试看起来像这样

但它只是挂起......所以可以使用一些指导来了解我在这里做错了什么‍♂️</p>

0 投票
1 回答
502 浏览

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

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

0 投票
0 回答
486 浏览

javascript - 在反应组件中使用 msw 模拟 fetch 不起作用

我目前有这个反应组件,它显示从 api 检索的服务列表(为简单起见删除了一些代码):

我编写了以下测试代码,我想模拟 fetch 函数,以便我可以测试渲染的数量是否正确,这里我使用 Mock Service Worker:

当我运行测试它失败并显示长度为 0(如果我编辑const [services, setServices] = useState([]);为数组中已有项目,则长度不同于 0)。似乎 fetch 甚至没有被执行。现在我尝试了许多选项来模拟 fetch 函数,但它们似乎都不起作用。我在这里做错了什么以及测试使用 fetch 的反应钩子的方法应该是什么?

0 投票
1 回答
681 浏览

reactjs - @testing-library/与 msw/node 反应;window.fetch 未在 POST 上返回正文

我使用 create-react-app 创建了一个简单的应用程序。我现在正在尝试使用 @testing-library 和 Mock Service Worker 编写一些自动化测试用例。由于我不知道的原因,当我使用 Window.fetch(或仅获取)发布请求时,不会返回响应的正文。

我正在使用以下依赖项:

我有以下测试:

的输出console.log(response)

谁能解释为什么不归还尸体以及如何使该测试起作用?

0 投票
1 回答
226 浏览

reactjs - 使用 mock service worker 测试 React App 时如何记录请求数?

在我的应用程序中,用户输入他们的出生日期,发送一个请求,如果它与数据库中的 DOB 匹配,他们将被发送到下一页。如果不匹配,则会向他们显示他们在链接不再有效之前剩余的尝试次数。他们有 3 次尝试。

我的问题是,我将如何使用模拟服务工作者来模拟这个功能?我需要记录这个请求被尝试和失败的次数。

这是处理程序的代码片段,您可以看到我现在已经在“验证尝试”之后硬编码了“1”。

我在其中确认错误日期 3 次的开玩笑测试:

0 投票
1 回答
812 浏览

reactjs - 如何使用 msw 有条件地模拟错误响应

我正在处理的 UI 根据收到的响应以不同的方式呈现。我想在收到 a4xx5xx响应时测试 UI。

我的 api 处理程序看起来像:

这将始终返回一个2xx响应,使其无法在收到4xx5xx响应时测试 UI,除非我手动更改处理程序,这很累人。

如何测试测试4xx5xx响应?

0 投票
0 回答
295 浏览

reactjs - 'TypeError [ERR_INVALID_ARG_TYPE]:“目标”参数必须是 Buffer 或 Uint8Array 的实例。收到 null':使用 msw 的反应测试库

当我使用带有 MSW 的 React 测试库运行测试代码时,出现错误

一个文件中有 6 个测试函数Component.test.tsx,所有函数都有类似的代码,例如

以上。

更大的问题是有时测试通过了,即使大多数时候它都失败了。

我尝试将每个测试功能划分为不同的测试文件,例如component1.test.tsx, component2.test.tsx, ... component6.test.tsx

结果真的很奇怪,因为 Jest 传递了整个文件。

我真的很想知道为什么会发生错误。

0 投票
1 回答
408 浏览

javascript - 当我打开浏览器的网络选项卡时,msw mockServiceWorker.js 资源仍处于“待定”状态

我在我的项目中使用 msw 来模拟获取 API 请求,我检查了网络选项卡,并且 mockServiceWorker.js 资源保持在“待处理”状态,此外,响应检索 index.html 而不是我在处理程序中模拟的 JSON 响应文件。也许我遇到了一个愚蠢的错误,但我没有在网上找到可以帮助我的资源,在此先感谢!

环境

姓名 版本
生活垃圾 0.28.2
浏览器 铬 90.0.4430.93
操作系统 视窗 10

请求处理程序

"dev": "webpack serve --mode development",在 CLI 中运行,这些是我的配置

实际要求

0 投票
2 回答
4077 浏览

reactjs - 使用 react-query 和 axios 测试 React 组件中的错误的问题。使用 React 测试库、Jest、msw 进行测试

我测试了一个反应组件,它应该显示微调器、错误或获取的配方列表。我设法测试了这个组件的加载以及它成功获取数据的时间。我有测试错误的问题。我用 msw 创建了测试服务器,它具有返回错误的路由处理程序。我使用 axios 向服务器发出请求。我认为问题出在这里:axios 发出 3 个请求,直到最后一个响应 useQuery 返回 isLoading=true,isError=false。只有在那之后它才返回 isLoading=false, isError=true。因此,在我对错误 screen.debug() 的测试中显示微调器,并且 errorMessage 返回错误,因为它没有找到带有文本“错误”的渲染元素,该组件应该在发生错误时显示。我能做些什么呢?我没有主意了。


编辑:

  • 我发现 useQuery 中有一个设置,“重试”默认为 3 个请求。我仍然不知道如何在我的测试中处理组件重试请求。

我是反应测试和打字稿的新手。

来自 RecipeList.test.tsx:

组件代码:

来自 RecipeList.tsx:

0 投票
1 回答
1168 浏览

reactjs - 模拟服务工作者无法拦截网络请求

我在这个git repo中有一个从头开始创建的 react 项目,没有使用 create-react-app,所以我使用msw doc建议的 jest.config.js 和 jest.setup.js 文件来模拟网络请求进行测试。执行测试时出现以下错误。

(节点:12207) ExperimentalWarning:fs.promises API 是实验性的 console.error 错误:错误:连接 ECONNREFUSED 127.0.0.1:5000

当我使用包含 setupTests.js 的 create-react-app 创建新项目时,相同的测试代码可以正常工作,但我想在从头手动创建的 react 项目中模拟 api 请求。

有什么建议吗?