问题标签 [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 回答
254 浏览

vue.js - 在“测试套件未能运行找不到模块'@vue/compiler-sfc'”上运行开玩笑测试错误时

跑步时vue-cli-service test:unit 我得到

我收到上述错误。

我的 package.json 中有以下内容

我试过删除我的节点模块,重新安装等。没有运气

下面是我的测试脚本

jest.config.js 上面。

我已经安装了 msw 并设置了它的帮助程序/处理程序等,但是当我运行我的测试脚本时,我得到了上面我假设它与我试图导入的 vue 组件有关?其他人在尝试使用 jest 和 vue 时遇到同样的问题或解决了类似的问题?

0 投票
0 回答
810 浏览

reactjs - 使用 openApi 后端模拟服务工作者

我正在使用MSWOpenAPI 后端包。我想模拟展位浏览器服务器和测试服务器。我有 OpenAPI 定义可用的表格,我为 RTK 查询生成了 generate.ts(超出了这个问题的范围)。我想使用 OpenAPI 规范将它与 OpenAPI 后端一起使用,并为浏览器和测试生成 MSW 休息工作人员。

接下来是设置:

索引.tsx

模拟/浏览器.ts

api.JSON

组件.tsx

这是 localhost:3000/links

我得到的错误是:

网络选项卡提供:

所有相关文章:https ://dev.to/epilot/testing-react-with-jest-and-openapi-mocks-8gc 和https://testing-library.com/docs/react-testing-library/example -介绍/

谢谢你。

0 投票
0 回答
76 浏览

node.js - React 单元测试在管道中失败

我正在使用模拟服务人员来模拟 api。我编写了一些单元测试,这些测试在我的本地和部署时通过。但是在 PR 构建期间,他们总是失败并出现错误:

我的单元测试

上面的元素应该被启用,因为有代码 componentDidMount() 函数,它触发了一个 api 来调用一个函数,但是在调用 api 时,它没有使用 mocks。

api 的模拟处理程序

handler.js

模拟服务工作者设置

服务器.js

jest.setup.js

0 投票
2 回答
1718 浏览

reactjs - 在使用 MSW 和 RTK Query 时使用 Jest 进行测试会导致测试出现奇怪的错误

我一天中的大部分时间都在试图解决这个非常烦人的错误。

我正在使用 redux-toolkit、MSW、RTK 查询和 React 测试库,目前正忙于编写一个测试简单登录流程的集成测试。

我遇到的问题是我在一个测试套件中测试两种不同的场景,一种是成功登录,一种是失败的。

当我一次运行一个时,我没有遇到任何问题,但是当我同时运行两个时,我收到以下失败场景的错误。

奇怪的是,失败的场景不应该到达调用 API 调用的页面,这会导致这个额外的 reducer 匹配器,因此为什么没有有效负载并且会发生错误。

当我在浏览器中测试时不会发生这种情况,只有在使用 Jest 测试时才会发生。

以下是我的测试:

下面是我的测试设置:

下面是我的setupTests.ts文件。

最后是我的 MSW 文件。

处理程序

服务器

有任何想法吗?

感谢你的帮助!

0 投票
1 回答
163 浏览

javascript - 带有 Content-Disposition 的 HTTP 响应不会触发下载

我使用msw来模拟自动化 FE 测试的后端响应。

我想为用户创建的数据创建一个导出功能。我正在POST向所需路线发出请求,并希望返回带有 .csv 的响应;.pdf;.xls 文件,应自动下载。

我一直在寻找适当的方法来做到这一点,并遇到了Content-Disposition响应标头。

可悲的是,响应没有触发保存对话,也没有开始下载,但我找不到错误。


编辑:经过几次对话和一些独特的情况后,我决定为生成的 Blob-Data 创建一个 ObjectURL,并通过window.open()调用强制下载。

我在处理程序中更改了预期的响应,并在我的 FE 中添加了相应的调用。

handlers.js

存储模块.js


让我向您展示工作流程:

一些组件.vue


存储模块.js


服务.js


最后是来自 handlers.js 的 MSW Response 函数

}),

我找不到它的问题,因为响应看起来像预期的那样:

0 投票
0 回答
77 浏览

reactjs - 如何将 Mock Service Worker 与 AWS App Sync GraphQL 查询结合使用?

我有这个查询,但 MSW 没有调用它。

我的处理程序如下所示:

我有一个如下所示的 setupTests.ts 文件:

在我的控制台中出现以下错误:

0 投票
1 回答
178 浏览

cookies - 如何使在节点+ jsdom(用于测试)中运行的模拟服务工作者接收跨域cookie?

我有一个带有 Jest + MSW 的复制仓库,我正在尝试让 MSW 接收跨域 cookie。默认情况下,JSDOM 加载在http://localhost. 当向这个域发送获取请求并且 MSW 也在这个域上监听时,一切都很好,cookie 被接收到。

但是,当尝试向另一个域发送请求时,例如http://localhost:4444,不会向 MSW 发送任何 cookie。奇怪的是,如果我注释掉 MSW 并在同一个端口上启动一个快速服务器,它确实会收到所有的 cookie。为什么它们被发送到快递服务器而不是MSW?

最后,同样奇怪的是,如果 MSW 和 express 服务器都在运行,MSW 在 4444 上,Express 在 5555 上,express 服务器将不再接收 cookie。就好像 MSWbeforeAll(() => server.listen());正在以某种方式杀死跨域 cookie。

饼干套装:

如何向 MSW 发送跨域请求并让它接收 cookie?

0 投票
1 回答
521 浏览

reactjs - 使用 MSW 测试 React-query,并将数据传递给子组件

我正在使用 React-query 并尝试对其进行测试,在父组件中调用数据并传递给子组件以呈现项目列表。我已经设置了 MSW,但是当我尝试测试时:

我明白了:

父组件是这样的:

设置测试:

处理程序

服务器

我在错误的地方测试吗?

0 投票
0 回答
40 浏览

reactjs - 使用 react-testing-library 测试模拟商店时遇到问题

好的,我想用 fetching(反应测试库)测试 redux 工具包。我有一点麻烦。

我已经模拟了商店(fetchedMockedState)并对其进行了测试(就像一个魅力,不包括在内)。然后我想测试向商店添加另一个注释。它包括以下内容:

  1. 测试点击添加(浮动操作按钮)
  2. 表格出现
  3. 测试填充两个输入
  4. 测试点击按钮添加注释
  5. 它应该隐藏表单并执行模拟提取(不起作用,表单仍在文档中,期望两个 id 元素listItemElement(从存储映射)的查询失败,同时显示长度结果为 1)
0 投票
0 回答
209 浏览

javascript - Jest 未能等待 axios 承诺破坏测试

我正在使用 Jest 作为测试运行程序编写测试,尝试使用 Mock Server Library ( https://mswjs.io/ ) 来模拟服务器。出于某种原因,Jest 似乎没有等待 Axios 调用的承诺。

为了隔离他的问题,我创建了一个简单的示例:一个 Vue 组件,它向测试 api 触发 axios 发布请求,然后使用响应中的值更新模板。

jsonplaceholder.typicode.com 发布请求文档在此处描述: https ://jsonplaceholder.typicode.com/guide/

它返回此输出

因此,一旦返回响应并且“result_id”的值为 101,屏幕上就会出现“RESULT 101”。在浏览器中它可以完美运行。

但在 Jest 中却没有。这是失败的 Jest 测试:

所以我使用 msw 模拟服务器并返回 200 状态,然后渲染页面,模拟按钮单击,并尝试查询包含“RESULT 101”的 div(使用 queryByText 或 queryByTestId),但 v-if指令永远不会被触发并且 'result_id' 没有被设置。因此,Jest 似乎没有等待 axios 承诺,并且“result_id”保持为空,而不是从响应中接收 101 值。

不确定我的代码是否有问题,或者是 Jest 甚至是 mswjs 错误。