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

Jest快照测试忽略了子样式

Jest快照测试是一种前端开发中常用的测试方法,用于比较代码的输出结果与预期快照是否一致。快照测试可以在组件开发、UI设计等场景中帮助开发人员捕捉和识别变化,从而减少手动检查代码的工作量。

忽略了子样式是指在进行Jest快照测试时,有些情况下我们可能并不关心组件中某些子样式的具体内容是否与预期一致,而只关心整体结构和主要样式是否正确。在这种情况下,我们可以通过配置Jest来忽略子样式,以便简化测试过程和结果比对。

要实现忽略子样式的快照测试,可以在Jest配置文件中使用toMatchSnapshot方法,并通过snapshotSerializers配置项自定义序列化器来忽略子样式。

以下是一个示例配置:

代码语言:txt
复制
// jest.config.js

module.exports = {
  snapshotSerializers: [
    "<rootDir>/path/to/customSnapshotSerializer.js"
  ]
};
代码语言:txt
复制
// customSnapshotSerializer.js

module.exports = {
  test(value) {
    return typeof value === "string";
  },
  print(value, serialize) {
    const ignoredStyles = ["color", "font-size"]; // 定义需要忽略的样式属性
    const parsedValue = parseHTML(value); // 解析HTML内容,获取样式属性

    ignoredStyles.forEach((style) => {
      delete parsedValue.style[style]; // 删除需要忽略的样式属性
    });

    return serialize(parsedValue); // 序列化处理后的内容
  }
};

在上述示例中,我们自定义了一个快照序列化器customSnapshotSerializer.js,通过解析HTML内容并删除需要忽略的子样式属性,然后再将处理后的内容进行序列化。在快照测试时,Jest将会使用这个自定义序列化器来比较快照结果。

需要注意的是,忽略子样式可能会导致一些潜在问题,例如在未来的代码变动中可能会改变这些被忽略的样式属性,从而导致测试结果不准确。因此,在使用快照测试时,仍然需要慎重考虑哪些样式属性可以被忽略,以保证测试的准确性和可靠性。

腾讯云相关产品推荐:

  • 云开发(Serverless Framework):提供了无服务器云函数和云数据库等功能,帮助开发者快速搭建和部署应用。产品介绍
  • 小程序云开发:结合了小程序和云开发的能力,提供了云函数、数据库、存储和云调用等功能,方便开发者构建小程序应用。产品介绍
  • 云原生应用引擎(TKE):提供了基于Kubernetes的容器服务,支持应用程序在云端的弹性伸缩和运维管理。产品介绍
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你需要了解的前端测试“金字塔”

但是它们无法测试一切。 为了确保我们呈现正确的样式,我们还需要使用快照测试快照测试 快照测试测试你的渲染组件的图片,并将其与组件的以前的图片进行比较。...用 JavaScript 编写快照测试的最好方法是使用 JestJest 不是拍摄渲染组件的图片,而是渲染组件标记的快照。 这使得 Jest 快照测试比传统快照测试快得多。...在下面的测试中,有人从中删除了 modal-card-foot 类。 快照测试是一种检查组件样式或标记的方法。 如果快照测试通过,我们知道代码更改不会影响组件的显示。...如果测试失败,那么我们知道确实影响了组件的渲染,并可以手动检查样式是否正确。 每个组件至少应有一次快照测试。 一个典型的快照测试呈现组件的状态,以检查它正确呈现。...现在我们已经有单元测试快照测试,是时候看看端到端(e2e)测试。 端到端测试 端到端(e2e)测试是高层测试。 它们执行与我们手动测试应用程序时相同的操作。

1.7K80

前端单元测试Jest

; 沙箱和快速:Jest虚拟化了JavaScript的环境,能模拟浏览器,并且并行执行; 快照测试Jest能够对React 树进行快照或别的序列化数值快速编写测试,提供快速更新的用户体验; 支持异步代码测试...Jest框架内置丰富的断言语句,详细的可以参考Jest 的Expect。...例如: 生命周期勾 jest 测试提供一些测试的生命周期 API,可以辅助我们在每个 case 的开始和结束做一些处理。...这里列举4个主要的生命周期勾: afterAll(fn, timeout): 当前文件中的所有测试执行完成后执行 fn, 如果 fn 是 promise,jest 会等待timeout 毫秒,默认 5000...Snapshot 快照测试第一次运行的时候会将被测试ui组件在不同情况下的渲染结果保存一份快照文件,后面每次再运行快照测试时,都会和第一次的比较,除非执行“yarn test – -u”命令删除快照文件

2.7K20
  • 使用storybook管理React组件

    "),测试完成后会在storyshots.test.js生成一个stories/index.js对应的DOM快照。...4.4 测试样式 样式测试这里采用Puppeteer 和Jest来实现,其原理是利用Puppeteer的无头的chrome浏览器和storybook的url绑定组件特点,来渲染不同的UI组件,再进行图片快照的对比...://localhost:9009 jest:integration", 第一次运行npm run test:integration可以生成UI组件渲染的一次快照,再次运行会将新旧快照进行对比,只有完全一致才能测试通过...PS:测试不通过时,运行npm run jest:integration将强制更新原有快照。...写在最后 本文是作者学习storybook的一些总结,总体感觉是接入成本不算高,但是模块包版本安装可能会有一些坑,但收获是给组件的管理、文档和测试提供一个一体化的解决方案,还是很值得的。

    3.4K20

    JavaScript 测试系列实战(二):深层渲染和快照测试

    今天,我们将更深入地挖掘并学习如何测试组件的 Props,如何(以及为什么)使用 mount 函数,以及什么是 Jest 快照测试。...快照测试 快照测试Jest 的一大招牌功能。所谓快照,可以简单地理解成是我们应用的一个**“代码截图”**。当我们运行快照测试时,Jest 将会渲染组件并创建其快照文件。...当我们再次运行快照测试时,Jest 会将新的快照与旧的快照进行比较,如果两者不一致,测试就会失败,从而帮助我们确保用户界面不会发生意外改变。...首先运行 npm test ,然后输入 i 以交互方式更新失败的快照。官方的 Jest 文档提供一个动画来展示这个过程: ?...除此之外,我们还介绍 Jest 快照测试,这是一个非常强大的工具,可以追踪组件渲染方式的变化。在接下来的文章中,我们还将介绍测试中常见的 Mock 技巧——与组件的模拟交互,不见不散!

    2.1K20

    小程序 自动化测试

    自动化测试在小程序中使用自动化测试,主要包括:单元测试、接口测试、web页面点击事件单元测试使用 jest全局安装 npm i jest -g在项目中创建jest.config.jsmodule.exports...= {snapshotSerializers: [], // Jest 应用于快照测试快照序列化程序模块的路径列表testEnvironment: 'jsdom', //默认:"node" 将用于测试测试环境...Jest 中的默认环境是 Node.js 环境, 如正在构建一个网络应用程序,你可以使用类似浏览器的环境来jsdom代替 testMatch: '' //测试文件存放地址 jest 用于检测测试文件的...文档miniprogram-automator 自动化测试搭建环境推荐使用1.05.2110202 或以上版本的开发者工具,支持自动化录制、检查元素、data 快照、 断言/检查、 cgi mock...,添加用例,点击录制按钮,对左侧模拟器上的页面进行操作,系统会自动记录整个过程,在操作过程中,可以对数据,页面进行快照、截图等操作在用例添加完成后,可以导出为jest代码,在单独的文件中维护生成报表结果在项目中也可以在非项目中

    2.6K20

    干货 | 携程租车React Native单元测试实践

    快照测试:能够创造一个当前组件的渲染快照,通过和上次保存的快照进行比较,如果两者不匹配说明测试失败。 测试报告:内置Istanbul,通过一定配置可以测试代码覆盖率,生成测试报告。...('InteractionManager'); 六、Jest UI快照测试 Jest提供snapshot快照功能用于UI测试,可以创建组件的渲染快照并将其与以前保存的快照进行比较,如果两者不匹配,则测试失败...快照将在测试文件的当前文件路径自动生成的snapshots文件夹中保存。当主动修改造成ui变化时,使用jest -u来更新快照。...这对于隔离组件进行纯单元测试很有用,效率高,可以进行模拟交互,并且从Enzyme 3开始也可以访问组件生命周期,所以一般组件测试用shallow即可。 mount:完整渲染,包括其组件。...因为渲染真实的DOM节点,可以用来测试DOM API的交互和组件的生命周期。 render:静态渲染,渲染为静态HTML字符串,包括组件,不能访问生命周期,不能模拟交互。

    6.1K30

    年轻时,我不写单元测试

    笔者在这里试着归纳一下解决问题的办法 样式问题需要制定相应的规范 不能使用css,只能用less来书写(大哥,都2888年还不用less吗) 使用less的类模块化写法 命名风格采用BEM (推荐)...,笔者又去调研下单元测试到底能够做什么。...shapshot就是会对组件进行一次快照记录当前的状态,每一次run jest的时候,对比上一次,看看是否有变化。...那最完美的情况就是,我们将所有的css样式打包,然后渲染出组件ui,对比上一次的纪录,看看是否有修改,但是很可惜,目前shapshot生成的快照文件里面只有class,并没有相关样式,除非你把所有样式写成...但是仔细想想,这其实就违背我们单元测试的初衷,笔者这里也大胆猜测下,jest官方在实现这个功能的时候,应该也只是想记录下一步一步的事件后,当前组件的html结构,对比上一次的快照,来看功能是否符合预期

    86920

    Jest 单元测试快速上手指南

    你可以完善测试用例, 或者可能有些文件(譬如 config)和代码分支并不需要测试, 可以将其在测试覆盖率结果中排除, 参考如下配置 忽略目录下所有文件 在 jest.config.js 中添加 collectCoverageFrom...开头的表示忽略与其匹配的文件 忽略单个文件 在该文件顶部添加 /* istanbul ignore file */ 忽略一个函数, 一块分支逻辑或者一行代码 在该函数, 分支逻辑或者代码行的上一行添加..., 这些资源是无法识别的 创建 Title.less 样式表 h1 { color: red; } 修改 Ttitle.tsx, 添加样式引用 import '....(less)$': '/jest.transformer.js', // 正则匹配, 处理 less 样式 }, 然后重新执行测试就可以 处理 css in js 如果你使用了类似.../jest.setup.js'], 重新执行测试就可以 测试交互事件 新增 Count.tsx 组件 import React, { useState } from 'react'; function

    3.4K30

    web前端好帮手 - Jest单元测试工具

    正如官方介绍所说,Jest是一款开箱即用的测试框架,其中包含了Expect断言接口、Mock接口、Snapshot快照测试覆盖率统计等等全套测试功能。 为什么不推荐Mocha?...基于以上划分,测试逻辑和范围就很清晰: url.parse方法支持: 解析一般url 解析带hash的url 解析url片段 url.getParameter方法支持: 从指定url中获取查询参数 从浏览器地址中获取查询参数...更新快照功能的坏处就是它操作太简单,简单到让人麻痹,让人懒惰,让人容易忽略快照更新前后的差异对比,将错误的测试结果作为正确快照提交上库。...和普通快照生成文件不同,行内快照会将快照内容直接打印到测试代码中: // 运行前:expect({ name: "shanelv" }).toMatchInlineSnapshot();// 运行Jest...我们大可把重复的测试操作交给自动化测试逻辑来负责,减少手动操作的时间,有种说法也是这般道理:先写测试,后写代码。说白就是,先规划好实际使用的场景,再用代码去实现他。

    5K40

    学习笔记——在vue中如何配置Jest(一)

    最近在搞Jest单元测试,如何在vue中安装和使用jest我就不说了,前一篇文章简单的说了一下在使用jest时遇到的一些问题,但是我觉得并没有真正的解决的很好。...采用的方式就是新建一个空的vue-cli生成的用jest来做单元测试的项目,这就导致测试环境的配置是极为脆弱的。而且还有十分大的隐患。但是又没办法一下解决。...实际上我的理解,这个参数的意义就是让jest知道你需要测试覆盖的文件的扩展名都是什么。 moduleNameMapper:一种正则表达式到模块名的映射,匹配到的文件的内容可以是空的。...snapshotSerializers:快照测试的插件,会生成测试文件的一个快照版本,可以再package.json中查看安装的快照插件。...这样我们就解释完了基础配置的参数,学习过后,我们对jest的配置有一个基本的了解。但是要想写单元测试文件,还是远远不够的。下一篇文章,我会介绍如何在为vue的单文件组件写测试用例。

    1.8K10

    2020 年你应该知道的 React 库

    它提供测试运行程序、断言库和监视(spying)/模拟(mocking)/stubbing 功能, 一个全面的测试框架中需要的所有东西。...至少,您可以使用 React-test-renderer 在 Jest 测试中渲染 React 组件。这已经足以用 jest 来执行所谓的快照测试了。...快照测试的工作方式如下: 运行测试之后,将创建 React 组件中渲染的 DOM 元素的快照。当您在某个时间点再次运行测试时,将创建另一个快照,用作前一个快照的差异。...如果 diff 不完全相同,则 Jest 将报错,您要么必须接受快照,要么必须更改组件的实现。...然后,Jest 用于 DOM 节点上的断言。 如果您正在为 React-to-end (E2E)测试寻找测试工具,Cypress 是最受欢迎的选择。

    14.4K40

    Unit Testing

    #配置单元测试 #安装 Jest 我们使用 yarn 来安装 Jest 包 yarn add -D jest 在 package.json 文件中加入测试命令 { "scripts": {...(ts|tsx|js)$": "ts-jest" } 在项目中配置别名。...node_modules 文件夹下的代码 一般来说这个是默认的,Jest 默认会忽略 node_modules 文件夹下的文件和代码 无法识别 css scss 等样式文件 在我们组件当中大部分都会有...css 或者 scss 等文件,但是 Jest 并无法处理这类文件,此时需要将此类样式文件都 Mock 掉 { moduleNameMapper: { '\\....纯 UI 展示型组件 ✅ ✅ ❌ 容器型组件 ✅ ✅ ❌ 通用 UI 组件 ✅ ✅ ❌ 功能型组件 ✅ ✅ ❌ 总结一句话就是,所有的功能型代码,都需要进行单元测试,但是像 UI 以及 css 等样式代码

    1.3K20

    学习笔记——在vue中如何配置Jest(一)

    大家好,又见面,我是你们的朋友全栈君。   ...最近在搞Jest单元测试,如何在vue中安装和使用jest我就不说了,前一篇文章简单的说了一下在使用jest时遇到的一些问题,但是我觉得并没有真正的解决的很好。...采用的方式就是新建一个空的vue-cli生成的用jest来做单元测试的项目,这就导致测试环境的配置是极为脆弱的。而且还有十分大的隐患。但是又没办法一下解决。...snapshotSerializers:快照测试的插件,会生成测试文件的一个快照版本,可以再package.json中查看安装的快照插件。...这样我们就解释完了基础配置的参数,学习过后,我们对jest的配置有一个基本的了解。但是要想写单元测试文件,还是远远不够的。下一篇文章,我会介绍如何在为vue的单文件组件写测试用例。

    2K30

    JavaScript 测试教程–part 3:测试 props,挂载函数和快照测试

    所以上面的测试失败,你需要了解“浅渲染”的局限性。 Mount 模拟了 DOM 的实现,而 Jest 默认使用 jsdom。...在测试期间,将渲染组件并创建其快照。它包含渲染组件的整个结构,应该与测试本身一起提交给存储库。再次运行快照测试时,新的快照将与旧的进行比较。如果它们不同,则测试将失败。...你还可以在 watch 模式下运行 Jest,这能够允许你一个接一个地更新所有有冲突的快照。...官方 Jest 文档【https://jestjs.io/docs/zh/snapshot-testing】中有一个很好的动画演示这个过程。 快照测试可以成为跟踪组件更改的非常强大的工具。...摘要 在本文中,我们介绍对组件的 props 进行测试的过程,并了解了 mount 函数和 浅渲染 之间的区别。除此之外,我们还介绍快照测试,它是跟踪组件渲染方式变化的有用工具。

    1.7K20

    Sentry 开发者贡献指南 - 测试技巧

    您应该努力包含涵盖各种用户角色、跨组织/团队访问场景以及无效数据场景的测试,因为这些在手动测试时经常被忽略。.../api/endpoints/test_organization_events_distribution.py -k method_name pytest 的一些常用选项是: -k 通过字符串过滤测试方法...我们在 Sentry 使用验收测试有两个目的: 涵盖仅通过端点测试或仅使用 Jest 无法涵盖的工作流程。 通过我们的视觉回归 GitHub Actions 为视觉回归测试准备快照。...Jest 测试 我们的 Jest 套件涵盖为前端组件提供功能和单元测试。我们更喜欢编写与组件交互并观察结果(导航、API 调用)的功能测试, 而不是检查 prop 传递和 state 突变。...请参阅 Frontend Handbook 了解更多 Jest 测试技巧。

    1.7K50

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

    技术选型 为了解决上面的问题,我们自然就会想到,其实我们需要一个自动化测试,我们在项目中的选型是这样的: Jest: Jest是一个令人愉快的 JavaScript 测试框架,专注于简单性。...常量: 一旦常量被定义,他们不应该是经常改变的,可以把他们理解为一个静态的代码集,无需加入到组件的测试用例中。 内联样式: 为了测试内联样式,需要使用测试中的样式复制对象。...如果对象样式更改,则必须在测试中也更改它们。记住一条不要在测试用例中复制组件的代码。你经常会忘记在测试中更改它。而且,你的同事永远不会意思到改个样式还要改测试用例。...在大多数情况下,内联样式不会改变组件的行为,因此不需要对它们进行测试。如果样式是动态更改的,这时候才需要加入到测试用例中。 其他: 跳过覆盖在测试组件中导入的测试组件。...3、模拟事件的触发来测试组件 通过 snapshot 测试和 props 测试,已经能确保组件是可以正常渲染的,但是这还远远不够,因为有很多分支代码我们是没有覆盖到的,如果你查看 jest --coverage

    2.4K80

    单元测试

    coverageDirectory: '/tests/coverage-jest', // 非必须配置 // transformIgnorePatterns这个配置项配置的是将一些文件忽略...React 组件的 JavaScript 测试工具库,它提供一组简单且易于使用的 API,可以帮助你编写可读性高、可维护性强的测试代码。...@testing-library/jest-dom 是一个用于增强 Jest 测试框架的库,它提供一组用于 DOM 断言的定制化匹配器和工具函数。...对于组件下并不复杂的组件,可考虑在父组件的测试文件中进行测试,而不需要单独的测试文件。...UI快照 应避免UI快照过大,不要无脑地记录整个组件的快照,特别是有别的 UI 组件参与其中的时候(比如antd多层级组件,将会使快照文件过于庞大,另外快照中杂揉 antd 的 DOM 结构后,快照变得非常难读

    27210

    聊一聊 2024 年 React 生态系统

    测试 测试 React 应用的核心是使用如 Jest 这样的测试框架。Jest 提供测试运行器、断言库以及其他实用的功能,满足全面测试框架的需求。...如果倾向于使用 Vite,Vitest 是一个值得考虑的 Jest 替代方案。 在测试框架中渲染 React 组件时,可以使用 react-test-renderer。...这足以进行所谓的快照测试,这是通过 Jest 或 Vitest 进行的。快照测试的工作方式如下:一旦运行测试,会为 React 组件的渲染DOM元素创建快照。...在未来的某个时间点再次运行测试时,将创建另一个快照,并使用它与前一个快照进行比较。如果差异不匹配,测试框架会发出警告,可以选择接受快照或调整组件。...建议: 单元/集成测试:Vitest + React Testing Library(最受欢迎) 快照测试:Vitest E2E测试:Playwright 或 Cypress 不可变数据结构 在 JavaScript

    1.1K10
    领券