首页
学习
活动
专区
工具
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)怎么测试渲染出来组件。...我们将在下一篇教程中讲解如何去更“深层”地去测试我们组件

2.9K10

如何测试 React 异步组件

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

3.3K50

Jest:给你 React 项目加上单元测试

Jest 是一款轻量 JavaScript 测试框架,它卖点是简单好用,由 facebook 出品。本文就简单讲讲如何使用 JestReact 组件进行测试。 为什么需要单元测试?...但 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.8K20

如何测试驱动开发 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.2K112

使用storybook管理React组件

本文已ReactUI组件为例,演示如何新建/集成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浏览器和storybookurl绑定组件特点,来渲染不同UI组件,再进行图片快照对比

3.3K20

前端工程化实践总结 |

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.4K41

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';安装jestts类型,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-组件样式持续更新目前这些内容持续更新到了我 学习文档 中。

28910

年轻时,我不写单元测试

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

85720

如何优雅设计 React 组件

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

5.3K100

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

如何优雅设计 React 组件

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

4K00

React总结(三)】React 组件自动化测试与持续集成指北(1)

听起来很美好,但是在实际工程实践方面,会产生一些问题: 如何组件质量?如何确保修改更新不会影响其他项目?如何最快地回归测试?...技术选型 为了解决上面的问题,我们自然就会想到,其实我们需要一个自动化测试,我们在项目中选型是这样Jest: Jest是一个令人愉快 JavaScript 测试框架,专注于简单性。...常量: 一旦常量被定义,他们不应该是经常改变,可以把他们理解为一个静态代码集,无需加入到组件测试用例中。 内联样式: 为了测试内联样式,需要使用测试样式复制对象。...在大多数情况下,内联样式不会改变组件行为,因此不需要对它们进行测试。如果样式是动态更改,这时候才需要加入到测试用例中。 其他: 跳过覆盖在测试组件中导入测试组件。...【React总结(三)】React 组件自动化测试与持续集成指北(2)

2.3K80

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.2K30
领券