首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React + Jest:如何测试私有样式的组件?

React是一个用于构建用户界面的JavaScript库,而Jest是一个用于JavaScript代码测试的框架。在React中,私有样式通常是通过CSS模块化或CSS-in-JS的方式实现的。下面是如何测试私有样式的组件的步骤:

  1. 配置Jest:首先,确保你的项目中已经安装了Jest,并且在package.json文件中配置了相应的测试命令。你可以使用以下命令安装Jest:npm install --save-dev jest然后,在package.json文件中添加以下配置:"scripts": { "test": "jest" }, "jest": { "moduleNameMapper": { "\\.(css|less)$": "<rootDir>/__mocks__/styleMock.js" } }这里的moduleNameMapper配置用于将CSS模块化或CSS-in-JS的样式文件mock掉,以便在测试中不会真正加载样式文件。
  2. 创建样式mock文件:在项目根目录下创建一个名为mocks的文件夹,并在该文件夹中创建一个名为styleMock.js的文件。在styleMock.js文件中,可以简单地导出一个空对象,如下所示:module.exports = {};这样,当在测试中引入CSS样式文件时,Jest会自动使用这个空对象来替代真正的样式文件。
  3. 编写测试用例:在编写测试用例时,可以使用React的测试工具库react-testing-library来渲染组件并进行断言。在测试私有样式的组件时,可以通过查询组件的DOM节点来验证样式是否正确应用。以下是一个示例测试用例:import React from 'react'; import { render } from '@testing-library/react'; import MyComponent from './MyComponent'; test('should apply private style correctly', () => { const { getByTestId } = render(<MyComponent />); const privateElement = getByTestId('private-element'); expect(privateElement).toHaveStyle('color: red'); });在上面的示例中,render函数用于渲染MyComponent组件,并返回一个包含各种查询DOM节点的对象。然后,可以使用getByTestId函数通过组件中设置的data-testid属性来获取私有元素的DOM节点。最后,使用toHaveStyle断言函数来验证私有元素是否应用了正确的样式。

需要注意的是,私有样式的测试重点在于验证样式是否正确应用,而不是具体的样式值。因此,在测试中应该关注样式的属性和状态,而不是具体的像素值或颜色值。

以上是测试私有样式的组件的基本步骤。对于React开发中的其他测试需求,可以根据具体情况选择合适的测试工具和方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JavaScript 测试系列实战(一):使用 Jest 和 Enzyme 测试 React 组件

本篇教程是 JavaScript 测试系列实战 的第一篇教程,首先介绍了测试的类型,然后主要通过一个 React 项目教会你如何使用 Jest 编写第一个测试,然后使用 Enzyme 对 React 组件进行浅层渲染...,以方便对不同层次的组件进行细粒度测试,当学习了这篇教程之后,你将对基础的测试编写、组件的测试有一个比较好的了解。...初识 Enzyme:编写第一个 React 组件测试 很显然,我们不会仅仅满足于测试像 divide 那样简单的函数,我们希望能够测试一个 React 组件,但是和一个普通的 JavaScript...函数不同,测试一个 React 组件还需要两个关键的问题:1)怎么渲染待测试的组件;2)怎么测试渲染出来的组件。...我们将在下一篇教程中讲解如何去更“深层”地去测试我们的组件。

3K10

如何测试 React 异步组件?

前言 本文承接上文 如何测试驱动开发 React 组件?,这次我将继续使用 @testing-library/react 来测试我们的 React 应用,并简要简要说明如何测试异步组件。...异步组件的测试内容 我们知道异步请求主要用于从服务器上获取数据,这个异步请求可能是主动触发的,也可能是(鼠标)事件响应,本文主要包含 2 方面内容: 如何测试在 componentDidMount 生命周期中发出的异步请求...如何测试(鼠标)事件发出的异步请求 ? ---- 对于异步组件,有两件步骤需要进行测试: 第一:测试异步方法本身有没有被调用,并且传了正确的参数。 第二:在调用之后,应用程序应该做出响应。...测试渲染 代码未动,测试先行,先确保我们的组件可以渲染。...,那么如何测试 react 路由 ?

3.3K50
  • Jest:给你的 React 项目加上单元测试

    Jest 是一款轻量的 JavaScript 测试框架,它的卖点是简单好用,由 facebook 出品。本文就简单讲讲如何使用 Jest 对 React 组件进行测试。 为什么需要单元测试?...但 Jest 本身并不支持 React 组件的测试 API,需要使用另外一个内置的 React Testing Library 库来测试 React 组件。...React Testing Library 是 以用户为角度 的测试库,能够模拟浏览器的 DOM,将 React 组件挂载上去后,我们使用其提供的一些模拟用户操作的 API 进行测试。...(/learn react/i); expect(linkElement).toBeInTheDocument(); }); Enzyme 另一种比较流行的测试 React 组件的框架是 Enzyme...16,Enzyme 已死: https://dev.to/wojtekmaj/enzyme-is-dead-now-what-ekl 使用 Jest 测试 React 组件 我们先实现一个简单的 Button

    2.9K20

    如何测试驱动开发 React 组件?

    它的原理就是在编写代码之前先编写测试用例,由测试来决定我们的代码。而且 TDD 更多地需要编写独立的测试用例,比如只测试一个组件的某个功能点,某个工具函数等。...本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...确保渲染测试 第一个测试相当抽象。仅仅需要检查组件是否展现(任何东西) ,以确保这个组件是存在。但是实际上,我将测试的组件还不存在。...小结 当然 @testing-library/react 还有很多方便的 api。大家可以自行查阅。 未来可能会出一些文章关于测试的文章。例如: 如何出测试 react hooks ?...如何测试react 路由? 如何测试接口? 希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

    2.1K10

    如何测试驱动开发 React 组件?

    它的原理就是在编写代码之前先编写测试用例,由测试来决定我们的代码。而且 TDD 更多地需要编写独立的测试用例,比如只测试一个组件的某个功能点,某个工具函数等。...本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...npx create-react-app my-react-app 我们先从测试文件开始。先创建了组件的目录“Confirmation” 并在其中添加一个“index.test.js”文件。...确保渲染测试 第一个测试相当抽象。仅仅需要检查组件是否展现(任何东西) ,以确保这个组件是存在。但是实际上,我将要测试的组件还不存在。...例如: 如何出测试 react hooks ? 如何测试 react 路由? 如何测试接口? 希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

    2.2K10

    React组件设计实践总结03 - 样式的管理

    React组件设计实践总结03 - 样式的管理 Bobi.ink 2019-05-14 CSS 是前端开发的重要组成部分,但是它并不完美,本文主要探讨 React...组件的样式管理 1️⃣ 组件的样式应该高度可定制化 组件的样式应该是可以自由定制的, 开发者应该考虑组件的各种使用场景. 所以一个好的组件必须暴露相关的样式定制接口....: React.CSSProperties; } 这两个属性应该是每个展示型组件应该暴露的 props, 其他嵌套元素也要考虑支持配置样式, 例如 footerClassName, footerStyle...点击这里了解更多, 另外在这里了解如何在 Typescript 中声明 theme 类型 8....这个对于复杂的组件树的渲染影响尤为明显 不能抽取为 CSS 文件, 这通常不算问题 官方benchmark 下面是基于 v4.0 基准测试对比图, 在众多 CSS-in-js 方案中, styled-components

    7.1K20

    QQ音乐商业化Web团队前端工程化实践总结

    CSS in JS CSS in JS是一种比较激进的方案,彻底抛弃了CSS,完全使用JS来编写CSS,又用起了行内样式(inline style),它的发展得益于React的出现,具体的原因可以参见组件化这部分内容...对样式如何定义并没有明确态度,无论是BEM规范,还是CSS in JS或者CSS module都是支持的,选择何种方案是开发者自行决定的。...前端如何做单元测试? 测试环境 和后端不同,前端有运行环境的差异性,需要考虑兼容性,如何模拟浏览器环境,如何支持到BOM API的调用,这些都是需要考虑的。...[CSS模块化方案对比] 单元测试框架 单元测试框架我们选择了Jest,主要是因为开箱即用,不需要再引入断言库,生态也很好,较多用于React项目,而且组内的UI自动化测试系统是支持Jest的,这篇文章...UI组件 Jest支持对React App的测试,可以采用截图测试(Snapshot Testing)、模拟DOM操作(DOM Testing)等方法详见文档。

    4.3K112

    使用storybook管理React组件

    本文已React的UI组件为例,演示如何新建/集成Storybook到项目中,并对UI组件进行全方位的管理,包括发布、demo文档、测试等。 1....以一个分页组件为例 从团队的stoneUI组件库直接移植过来 将Pagination、IconV组件源码放入components目录; 编写story: import React from 'react...测试UI组件 4.1 写测试用例的原因 找到bug 新修改没有改变已有的接口和功能 将测试用例作为文档 4.2 测试结构 使用storyshots插件来实现,其核心是使用Jest,原理是每次生成一份DOM...,通过断言来测试UI组件的属性,更多使用方法可以参考specifications插件的使用。...4.4 测试样式 样式测试这里采用Puppeteer 和Jest来实现,其原理是利用Puppeteer的无头的chrome浏览器和storybook的url绑定组件特点,来渲染不同的UI组件,再进行图片快照的对比

    3.4K20

    前端工程化实践总结 |

    CSS in JS CSS in JS是一种比较激进的方案,彻底抛弃了CSS,完全使用JS来编写CSS,又用起了行内样式(inline style),它的发展得益于React的出现,具体的原因可以参见组件化这部分内容...对样式如何定义并没有明确态度,无论是BEM规范,还是CSS in JS或者CSS module都是支持的,选择何种方案是开发者自行决定的。...前端如何做单元测试? 测试环境 和后端不同,前端有运行环境的差异性,需要考虑兼容性,如何模拟浏览器环境,如何支持到BOM API的调用,这些都是需要考虑的。...CSS模块化方案对比 单元测试框架 单元测试框架我们选择了Jest,主要是因为开箱即用,不需要再引入断言库,生态也很好,较多用于React项目,而且组内的UI自动化测试系统是支持Jest的,这篇文章...UI组件 Jest支持对React App的测试,可以采用截图测试(Snapshot Testing)、模拟DOM操作(DOM Testing)等方法详见文档。

    4.5K41

    Unit Testing

    未忽略 node_modules 文件夹下的代码 一般来说这个是默认的,Jest 默认会忽略 node_modules 文件夹下的文件和代码 无法识别 css scss 等样式文件 在我们组件当中大部分都会有...: new Adapter() }) 其他配置可以参考官网的配置文档来进行进一步的配置 #如何做好单元测试 #一个好的单元测试应该遵循下面三个步骤 // production code const computeSumFromObject...但是如果你将所有的代码都写了单元测试,那么我觉得你是把全身的安全带都绑上了,只露了一只眼睛,你的开发工作将举步难行,下面来说说单元测试应该覆盖哪些,不应该覆盖哪些 组件类型/测试内容 分支渲染逻辑 事件调用...纯 UI 展示型组件 ✅ ✅ ❌ 容器型组件 ✅ ✅ ❌ 通用 UI 组件 ✅ ✅ ❌ 功能型组件 ✅ ✅ ❌ 总结一句话就是,所有的功能型代码,都需要进行单元测试,但是像 UI 以及 css 等样式代码...在表格中 ✅ 的,建议是在 100% 的覆盖率 #参考 Jest React 测试技巧 React 单元测试策略及落地 单元测试-维基百科

    1.3K20

    前端反卷计划-组件库-04-Button组件开发

    今天开始分享如何从0搭建UI组件库。这也是前端反卷计划中的一项。在接下来的日子,我会持续分享前端反卷计划中的每个知识点。以下是前端反卷计划的内容:目前这些内容持续更新到了我的 学习文档 中。...'@testing-library/jest-dom';安装jest的ts类型,create-react-app默认自带了,就不用安装了。...npm install --save-dev @types/jest4.5.1 测试1:展示正确的默认按钮import React from 'react'import { render, fireEvent...:4.5.4 测试4:测试按钮的disabled属性const disabledProps: ButtonProps = { disabled: true, onClick: jest.fn...-01-环境搭建前端反卷计划-组件库-02-storybook前端反卷计划-组件库-03-组件样式持续更新目前这些内容持续更新到了我的 学习文档 中。

    32010

    如何优雅的设计 React 组件

    约定目录结构 先假设我们已经拥有一个可以运行 React 项目的脚手架(ha~ 因为我不是来教你如何搭建脚手架的),然后项目的源码目录 src/ 下可能是这样的: . ├── components ├─...文件名的方式来实现,比如 TodoList 的样式文件 todo-list.scss。...为了让组件“一次编写,随处使用”的原则,我们可以进一步拆分 TodoList 组件以满足其他组件的使用。 但是,如何拆分组件才是最合理的呢?...因为我觉得 组件 Todos 跟 TodoList 有紧密的父子关系,且跟其他组件间也不太会有任何交互,也可以认为它是 TodoList 私有的。...因为 this.state.todos 的初始状态是由外部 this.props 传入的,假如父组件重新更新了数据,会导致子组件的数据和父组件不同步。那么,如何解决?

    5.3K100

    如何优雅的设计 React 组件

    约定目录结构 先假设我们已经拥有一个可以运行 React 项目的脚手架(ha~ 因为我不是来教你如何搭建脚手架的),然后项目的源码目录 src/ 下可能是这样的: . ├── components ├─...文件名的方式来实现,比如 TodoList 的样式文件 todo-list.scss。...为了让组件“一次编写,随处使用”的原则,我们可以进一步拆分 TodoList 组件以满足其他组件的使用。 但是,如何拆分组件才是最合理的呢?...因为我觉得 组件 Todos 跟 TodoList 有紧密的父子关系,且跟其他组件间也不太会有任何交互,也可以认为它是 TodoList 私有的。...因为 this.state.todos 的初始状态是由外部 this.props 传入的,假如父组件重新更新了数据,会导致子组件的数据和父组件不同步。那么,如何解决?

    4K00

    年轻时,我不写单元测试

    其实之前就已经简单的了解过了单元测试,但当时对于单元测试我是持有一种很否定的态度的,因为他太过于鸡肋,都是测试一些很基础的功能,但是当笔者被这次重构折磨之后,有重新思考了下如何能够保证代码的健壮性,抱着这个态度...重点将展开以下两种react组件类型测试。 展示型组件测试 展示型组件测试,意思就是要确保每一次的修改都是符合预期的,这里笔者要着重介绍下jest框架里面的snapshot功能。...那最完美的情况就是,我们将所有的css样式打包,然后渲染出组件ui,对比上一次的纪录,看看是否有修改,但是很可惜,目前shapshot生成的快照文件里面只有class,并没有相关样式,除非你把所有样式写成...但是仔细想想,这其实就违背了我们单元测试的初衷,笔者这里也大胆猜测下,jest官方在实现这个功能的时候,应该也只是想记录下一步一步的事件后,当前组件的html结构,对比上一次的快照,来看功能是否符合预期...一开始我觉得单元测试很鸡肋的原因也是没有深入了解它,这次发现就算是和业务结合很紧密的组件,也能够模拟正常的操作,这里就贴一个和redux结合的组件来举例 import React from 'react

    87520

    2020 年你应该知道的 React 库

    React 测试 如果您想深入了解 React 中的测试,请阅读以下内容: How to test components in React。要点如下: 测试 React 应用程序的主干是 Jest。...至少,您可以使用 React-test-renderer 在 Jest 测试中渲染 React 组件。这已经足以用 jest 来执行所谓的快照测试了。...快照测试的工作方式如下: 运行测试之后,将创建 React 组件中渲染的 DOM 元素的快照。当您在某个时间点再次运行测试时,将创建另一个快照,用作前一个快照的差异。...如果 diff 不完全相同,则 Jest 将报错,您要么必须接受快照,要么必须更改组件的实现。...最终,您会发现自己在使用 Enzyme 或 React Testing Library (这两个都在 Jest 测试环境中使用)来进行更详细的测试功能集。

    14.4K40

    用Jest来给React完成一次妙不可言的~单元测试

    严重的时候甚至会出现我改了一行代码,却不清楚其影响范围情况。这种时候,就需要测试的方式,来保障我们应用的质量和稳定性了。 接下来,让我们学习下,如何给 React 应用写单元测试吧?...而对于开发者来说,重要的是进行了测试的动作。本篇文章主要围绕着React组件单元测试展开的,其目的是为了让开发人员可以站在使用者的角度考虑问题。...(CV也是可以的?) 1.如何创建测试快照 快照,顾名思义,允许我们保存给定组件的快照。当您进行更新或重构,并希望获取或比较更改时,它会提供很多帮助。 现在,让我们看一下 App.js 文件的快照。...fireEvent 有几个可以用来测试事件的方法,因此您可以自由地深入文档了解更多信息。 现在我们已经知道了如何测试事件,接下来我们将在下一节中学习如何处理异步操作。 4....结语 React Testing Library 是用于测试 React 应用的一大利器。它为我们提供了访问 jest-dom 匹配器的机会,以及最佳实践,使得我们可以使用它来更有效地测试我们的组件。

    15K33

    React 测试驱动开发:从用户故事到产品

    一旦完成本教程,你将能够: 基于需求创建 epic 和 user stories(用户故事) 基于用户故事创建测试 使用 TDD 开发一个 React 应用 使用 Enzyme 和 Jest 测试 React...《对 React 组件进行单元测试》 《更可靠的 React 组件:从"可测试的"到"测试通过的"》 《如何测试 React Hooks ?》...《Vue 测试指南中文版》 应用概览 我们将创建一个由某些 UI 组件构成的番茄计时器基础应用。每一个组件都会在相关的一个测试文件中拥有独立的一组测试。...添加 App 的样式 接下来我们在 src/components/App 目录中创建一个 App.css 文件,增加一些 App 组件的样式: .app-container { height: 100vh...计时器 所以,这就是我们如何使用 TDD 开发一个基础 React 应用的过程。用户故事及验收准则越细致,测试用例也将越精确,那将是大有裨益的。

    3.3K30
    领券