问题标签 [testing-library]

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 回答
364 浏览

reactjs - 作为集成测试的一部分,如何在组件中模拟 const 方法?

所以,我正在使用 jest & tesing-library 进行集成测试。所以,我有一个名为“Product”的“主要组件”,它引入了另一个组件,我们称之为“ProductListings”。

在“ProductListings”中,我单击一个在功能组件中调用方法的 div。我如何模拟它,以测试它被称为?

// 这就是 ProductListing 的样子(伪)。它是 IN Products 组件,我正在集成测试。

看我的问题。引入包含“内部组件 ProductListings”的父组件,然后我从中获得一个 div,然后单击.. 我需要在其中模拟该函数“fireTheAPI”

顺便说一句,“产品”看起来像:

0 投票
1 回答
1312 浏览

reactjs - 使用@testing-library/react (react-testing-library) 进行单元测试分支覆盖率(100%)

如何使用 @testing-library/react (react-testing-library) 在单元测试中覆盖所有分支 (100%)。

下面是一些场景

  1. 条件声明

如何覆盖 if 和 else 分支中的语句?

  1. 组件中的私有方法

如何覆盖上述私有方法中的语句,这些语句创建为作为道具传递给子级并且仅从子级触发?

0 投票
0 回答
113 浏览

javascript - 测试未从预定义的路线开始

我对多页应用程序进行了测试。现在我想在测试中初始化一个路由。但我无法使用 react-router initialEntries 使其工作。我尝试了使用 createMemoryHistory 和 MemoryRouter 的路由器。但测试总是以“/”路由开始。

如何使测试从“/page-1”开始?

这是代码沙盒的链接 https://codesandbox.io/s/testing-react-89nfe?file=/src/index.js 由于沙盒还不支持玩笑模拟,因此测试在代码沙盒上失败。

app.test.js

应用程序.js

0 投票
1 回答
997 浏览

unit-testing - 如何对 Express 服务器生成的 .ejs 文件进行单元测试?

我有一个简单的 http Express 服务器,它服务于几个路由,比如 home、about、news 等。

对于每条路线,我使用res.render('some_ejs_file'), 来呈现带有.ejs扩展名的 html 页面。每个页面都有一个.js文件脚本,我只是想知道如何渲染.ejs文件以运行正确的 js 文件并渲染页面来测试它?

我安装了@testing-libraryand jest,这是我的home.test.js文件:

但问题是,当我来自 的querySelect东西时container,它总是返回null,我无法继续进行测试步骤。我做错了什么,如何获得.ejs组合标记文件的适当测试体验?

这是我的笑话配置文件:

0 投票
3 回答
1975 浏览

javascript - TypeError: Select is not a constructor when using Svelte and jest

在为 Svelte 组件编写 Jest 测试TypeError: Select is not a constructor时,当组件使用 es6 导入语法导入库时出现错误。

测试选择.js:



TestSelect.spec.js:



笑话配置

我想知道是否有一个我错过的开玩笑配置选项。提前致谢

0 投票
1 回答
380 浏览

reactjs - fireEvent.change() 不输入值

我有一个非常简单的表单,它有 1 个输入,目前正在对其进行测试。但是,我无法通过 fireEvent.change() 添加输入。

主要代码

测试块

错误

0 投票
2 回答
1564 浏览

javascript - 如何使用 Cypress 和 @testing-library/cypress 测试复选框切换,

我正在尝试使用 cypress 测试库编写测试手风琴的切换动作。下面是手风琴的标记,它正在使用复选框 hack 进行切换:

和测试如下:

问题cy.findByRole({ role: "checkbox" });总是返回未定义,我该如何解决这个问题或以正确的方式编写上面的测试。

谢谢

0 投票
1 回答
3689 浏览

ag-grid - 如何使用测试库测试 ag-grid 中的内容?

我正在尝试编写一些简单的测试,以使我要呈现的标头和数据按预期显示。我创建了一个 repo - https://github.com/olore/ag-grid-testing-library来重现。该表在浏览器中打开时看起来与我预期的一样。

和测试

在本地,前 2 列标题和数据是可访问的,但没有呈现其他列,正如我在 testing-library 的输出中看到的那样。我--env=jsdom-fourteen按照其他帖子的建议使用。

奇怪的是,当在此 repo 的代码和框中时,没有为测试呈现标题或数据,与本地一样,浏览器看起来是正确的。 https://codesandbox.io/s/gallant-framework-e54c7。然后我尝试等待gridReady https://codesandbox.io/s/intelligent-minsky-wl17y,但没有任何区别。

编辑:还尝试在 onGridReady 中直接调用函数,同样的问题(前 2 列通过,第二列失败)

0 投票
0 回答
1944 浏览

javascript - testing-library/react 如何在动态生成错误消息时测试无效输入

我在反应中使用表格。它有卡号字段。因此,如果用户输入“333”并进入选项卡,则会显示一条动态消息,显示“卡号必须是 16 位数字”。

我正在使用@testing-library/react@9.5.0and编写测试ts-jest@26.3.0

表单组件:

CardForm.ts

用户 React-text-mask,Material UI 显示输入,该输入通过模式进行验证,该模式具有查看输入值是否为 16 的方法,并返回错误,然后显示为帮助文本。

CardForm.test.tsx

错误! 在此处输入图像描述

有人可以帮我写期望语句,这样一旦我输入错误然后模糊,我就可以从屏幕上读取错误吗?

0 投票
1 回答
639 浏览

javascript - fireEvent 没有点击 React 组件上的按钮

我正在为 React 组件编写测试。这是一个计时器,当你按下一个按钮时开始倒计时,然后当你按下同一个按钮时停止。我有一个测试用例试图按下暂停按钮,等待一秒钟,然后再次按下暂停按钮,检查计时器以确保一秒钟已经过去:

Timer.test.js

问题是,测试似乎没有按pauseButton我想要的方式点击。当我运行我的测试时,Jest 在终端告诉我,timerOutput结果是'25:00'而不是'24:59',并且似乎组件未能通过测试。但这是测试的问题,而不是组件的问题;当我在浏览器中运行应用程序并自己按下按钮时,它会按应有的方式工作。如何让这个测试正常工作,并按我想要的方式点击按钮?