问题标签 [react-testing]

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 投票
1 回答
985 浏览

reactjs - React Test 在状态更改后未按文本查找元素

我有一个LoginForm接受login回调并呈现登录表单的组件。当login返回一个被拒绝的承诺时,该消息将显示在组件中。这是我要测试的行为。

我将 create-react-app 环境与jest,enzyme@testing-library/react.

我已经在 UI(浏览器)中手动测试了该组件,并确保它可以工作并显示消息,但测试不工作并且最后一个断言失败:

我在浏览器中呈现时检查了该消息,它以文字“出现错误”的形式出现,中间没有任何元素。仅由样式化组件包裹。我无法进行测试,有人可以帮忙吗?

我的测试如下:

我的组件渲染如下:

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 请求。

有什么建议吗?

0 投票
0 回答
515 浏览

reactjs - 如何在 React 测试库/Jest 中测试按钮是否有条件启用

我需要测试在填写文本输入后是否有条件地启用按钮。

现在只需检查它们是否被禁用即可使用以下内容:

但我想检查它们是否在填写输入值后启用。

这是我目前拥有的。

我想说这将检查按钮是否被禁用,模拟填写必要的输入,然后检查按钮是否从禁用变为启用。但是测试失败了。

0 投票
2 回答
188 浏览

unit-testing - 使用带有表单输入元素的 ReactBootstrap 模式对 React 组件进行单元测试

我有 react-bootstrap 的 Modal 组件,它有一个输入,当我对 Focus 进行单元测试时,它说它收到了整个文档,而不仅仅是 Input 元素。

有谁知道为什么焦点转到整个文档(Modal 是否使整个文档集中)。非常感谢您的帮助。下面是我的代码

注册.js

Signup.test.js

结果

0 投票
0 回答
183 浏览

unit-testing - 点亮元素,单元测试 - 嵌套元素 - 子元素不呈现

我对 lit-element 和单元测试非常陌生,并且不确定问题是否正确。如果我在任何地方错了,请纠正我。

所以,我创建了 1 个点亮的组件,以便它从 uri 中获取 json <abc infoJsonLink="../data/data.json"></abc>

数据.json

在 abc 的 render() 方法中,我们遍历 json 数据并创建一个数组,其中包含与每个项目对应的 html 标记,itemsMarkupList

这些标记中的每一个都必须在引导轮播中呈现。https://mdbootstrap.com/snippets/jquery/ascensus/135508

为此,我们创建了另一个组件,<carousel-helper>它具有接受标记数组并使用引导库将其呈现为轮播的代码。

下面是组件的render()方法<abc>

当我这样做时,这整个渲染得非常完美npm run

但是当我为此编写测试用例时,子元素的 shadowroot 似乎没有呈现。

statement-1工作并返回<carousel-helper></carousel-helper>
statement-2 return 和空数组,NodeList {}

谁能告诉我我需要做什么才能从statement-2获得一个填充的数组?

0 投票
2 回答
189 浏览

reactjs - 在“if”语句中不会调用模拟函数 - 用玩笑和酶反应应用程序测试?

我正在为我的反应应用程序编写一个测试用例,并且我正在尝试使用模拟功能模拟按钮单击。我将模拟函数作为道具传递,我在“if”语句中调用该函数,但没有调用模拟函数并且测试失败但是如果我在没有“if”语句的情况下调用函数,它会得到调用并且测试通过。为什么会这样?

表单.js

Form.test.js

我正在使用反应 16。

0 投票
1 回答
226 浏览

reactjs - 开玩笑的测试库 - 模拟拒绝承诺不能按预期在 useAsync() 中工作

我在我的函数组件中使用 useAsync() 钩子。该组件在上一步中单击下一步按钮后在 material-ui stepper 的最后一步呈现,这是一个单独的组件。

以下是我的测试片段:

测试失败,如下:

我感谢对此问题的任何见解。谢谢。

0 投票
0 回答
50 浏览

node.js - Enzyme Chai React Test_TypeError:无法添加属性值,对象不可扩展

我是一名新的 React 和 Javascript 开发人员。我已经为狗示例的反应测试安装了 Chai 和 Enzyme 并创建了所有测试文件。文件结构如下:

但是,当我点击“npm run test”时,我有 4 次失败,如下所示:

我的 AddDog.test.js 文件如下:

这是下面的 App.js 文件:

此外,这是 AddDog.js 文件,如下所示:

请告诉我如何解决这个错误。有没有办法在测试文件中添加新狗而不会出现此错误?

0 投票
1 回答
315 浏览

reactjs - 为什么 react-test-renderer 在 React 中只能在同一个文件中 findByType 功能组件?

some-table.jsx这是我正在测试的功能组件:

这是我的测试文件:

该测试通过。但是,如果我SomeRow进入它自己的文件,它就会失败:

some-table.jsx

some-row.jsx

失败:

任何想法为什么会这样?感谢您的阅读。

0 投票
1 回答
1185 浏览

reactjs - 如何使用反应测试库模拟将道具传递给子组件的父组件

**如果传递给子组件的道具基于父组件中动态发生的状态更改,如何检查父组件中的动态状态更改并使用反应测试库编写测试用例。有人可以帮我弄这个吗?在此处输入图像描述

应用程序.js

文本区域.js

应用程序.test.js