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

单元测试

交互),推荐单测之前已评审过测试用例 公共类 公共组件 公共方法 公共自定义hook 需求功能类 组件的Props(组件的入参是否在正确的场景或时机被正确的使用或调用) Render 交互(基于用户的交互判断关键节点的流程是否在正确的时机被正确执行...对于层级较深的组件,需在单测文件中增加注释,说明测试组件所在的路径 运行单测 单测执行 安装 VSCode Jest 运行插件 名称: Jest Runner ID: firsttris.vscode-jest-runner.../BLoginModal/services/wxApi'; // 这种方式设计到代码细节问题需避免使用,如果方法名 getWXSanqrAjax 变更将导致测试用例执行失败 jest.spyOn(wxApis...); // 带上 jest 的类型提示 mockedGet.mockResolvedValue(resp); // 含有 jest 的类型提示 jest 单独运行每一个测试用例都可以通过测试,但是当运行一组测试用例时...这样可以确保每个测试用例完成后,不会留下任何对后续测试用例有影响的状态。 确保在每个测试用例中,等待异步操作完成后再进行断言。

31210

前端单元测试,更进一步

,把组件级别的开发在 Storybook 中快速完成。...pre-commit 等开发流程中,也容易重蹈早期 Jasmine 等基于浏览器页面单测用例的覆辙 -- 编写简单但很容易过时失效。...) ).toBeInTheDocument(); }; 类似单测在命令行中的红绿结果,交互式测试的每个步骤、其成功失败,都会显示在相应的面板中: 复用测试用例 不难发现,工具栈相同、写法无异,...需要做的也非常简单,直接在单测中 import 后 play 就是了: // foo.spec.jsx import { render } from '@testing-library/react';...,甚至可以在 Playwright 中调用 Storybook 服务后再编写自动化测试 -- 后者这里不展开讨论了;总之,测试工具的发展,给了前端开发者更直观编写测试用例的手段,最终也更好地保证了前端项目的开发质量

1.1K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Jest + React Testing Library 单测总结

    目前腾讯课堂基于 Tdesign 开发的素材库组件的单测,就是使用 Jest + React Testing Library 来完成。...在 VS Code 中,我们也可以安装插件:Jest Runner。 在代码中,就可以快速跑测试用例,可以说非常的方便了。...的扩展阅读材料 Jest 学习指南 那些年错过的 React 组件单元测试 使用 Jest 测试 JavaScript (Mock 篇) 3、React Testing Library testing...3.1 render & debug 在测试用例中渲染内容,可以使用 RTL 库中的 render,render 函数可以为我们在测试用例中渲染 React 组件。...   }); }); 其实,在我们编写组件测试用例时,都可以通过 debug 函数把组件渲染结果打印出来,这可以提高我们编写用例时的效率,同时,这一特点也很符合 RTL 的设计观念。

    4.6K20

    前端接入单元测试(Node+React)

    在开发新框架时,直接运行老前端框架的单侧用例,如果所有测试用例都通过,则可快速保证内部api的一致性,快速验证所有功能。...组件,最开始使用Enzyme,后面从React脚手架创建的项目自带React Testing Library(RTL),官方推荐使用RTLimport React from "react";import...如果频繁修改业务代码时,对应的测试用例可能也要修改。...orange-ci跑单元测试 优点:配置简单,和现有的工作流集成在一起,可以在构建前执行测试用例,执行效率高…总结node项目可以利用egg自带的测试工具,针对controller, service,...extend, helper等模块编写单元测试,特别是controller重要的路由需要做单元测试;控制台和其他React项目可以利用jest工具,针对方法、组件、模块去做单元测试,特别是组件,可以利用快照功能避免多次修改测试用例

    3.3K30

    React团队是如何测试并发特性的

    比如,下面是使用ReactDOM的输出结果测试「无状态组件的渲染结果是否符合预期」(测试框架是jest): it('should render stateless component', () =>...对于测试「React内部运行机制」这样的场景,掺杂了宿主环境相关信息显然会让测试用例编写起来更繁琐。 2. 如何测试并发环境?...如果将上文的用例中ReactDOM.render改为ReactDOM.createRoot,那么用例就会失败: // 之前 ReactDOM.render(React中的测试用例会这么写: // 测试用例修改后: await act(() => { ReactDOM.createRoot(el).render(试用例的编写策略为: 可以用ReactDOM测的用例,一般结合ReactDOM与ReactTestUtils(浏览器环境的辅助方法)完成 需要把控中间过程的用例,使用Scheduler的测试包,用Scheduler.unstable_yieldValue

    1.4K20

    react生态下jest单元测试

    module.exports = Hook; 文件名:Hook.test.js describe('hook', () => { const hook = new Hook(); // 每个测试用例执行前都会还原数据...后面每次再运行快照测试时,都会和第一次的比较,若组件代码有所改变,则快照测试会失败,如果组件代码是最新的,优化过得代码,则需要更新快照,免得每次执行报错。...更新快照命令:jest --updateSnapshot 被测组件代码如下: //被测组件 import React from 'react'; const STATUS = { HOVERED...、断言或是进行 snapshot 测试 //React 组件的 render 结果是一个组件树,并且整个树最终会被解析成一个纯粹由 HTML 元素构成的树形结构 it("renders correctly...方法并传入要 render 的组件就可以获得一个 TestRenderer 的实例 import { jest } from '@jest/globals'; import ReactTestUtils

    2.3K20

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

    快照测试:能够创造一个当前组件的渲染快照,通过和上次保存的快照进行比较,如果两者不匹配说明测试失败。 测试报告:内置了Istanbul,通过一定配置可以测试代码覆盖率,生成测试报告。...,一般用于异步测试 四、Jest 周期函数 在写测试用例之前,可以用四个周期函数进行一些处理: beforeAll(() => { console.log('所有测试用例测试之前运行'); });...afterAll(() => { console.log('所有测试用例测试完毕后运行'); }); beforeEach(() =>{ console.log('每个测试用例测试之前运行'...); }); afterEach(() => { console.log('每个测试用例测试完毕后运行'); }); 五、Jest Mock函数 在单元测试中,有许多对象或函数并不需要真实的引用,...('InteractionManager'); 六、Jest UI快照测试 Jest提供了snapshot快照功能用于UI测试,可以创建组件的渲染快照并将其与以前保存的快照进行比较,如果两者不匹配,则测试失败

    6.1K30

    那些年错过的React组件单元测试(上)

    我们发现有以下几种模式: f: 只会测试之前没有通过的测试用例 o: 只会测试关联的并且改变的文件(需要使用 git)(jest --watch 可以直接进入该模式) p: 测试文件名包含输入的名称的测试用例...t: 测试用例的名称包含输入的名称的测试用例 a: 运行全部测试用例 在测试过程中,你可以切换适合的模式。...钩子函数 类似于 react 或者 vue 的生命周期,一共有四种: beforeAll():所有测试用例执行之前执行的方法 afterAll():所有测试用例跑完以后执行的方法 beforeEach(...通过第一个测试用例加 1,number的值为 1,当第二个用例减 1 的时候,结果应该是 0。但是这样两个用例间相互干扰不好,可以通过 Jest 的钩子函数来解决。...总结 到这里,关于前端单元测试的一些基础背景和Jest的基础api就介绍完了,在下一篇文章中,我会结合项目中的一个React组件来讲解如何做组件单元测试。 ?

    5K20

    对 React 组件进行单元测试

    单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 测试框架 测试框架的作用是提供一些方便的语法来描述测试用例,以及对用例进行分组。...测试用例 test case 为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。 一般的形式为: it('should ......测试覆盖率(code coverage) 用于统计测试用例对代码的测试情况,生成相应的报表,比如 istanbul 是常见的测试覆盖率统计工具 II....此外, Jest 的测试用例是并行执行的,而且只执行发生改变的文件所对应的测试,提升了测试速度。...用测试驱动 React 组件重构 这里不展开讨论经典的 “测试驱动开发”(TDD - test driven development) 理论 -- 简单的说,把测试正向加诸开发,先写用例再逐步实现,就是

    4.3K40

    前端自动化测试探索和实践

    小王删掉代码之后跑测试用例,突然好几个刺眼的红色字符映入眼帘 —— 「FAIL TO TEST」 一看测试用例描述,小王这才知道这段代码的作用。...于是小王对这段代码做了重构,同时也加上了新功能,跑一遍测试用例 —— 全是绿色的 「PASS」。 小王长舒一口气,给自己的新功能也加上了测试用例,修修改改让新加的测试用例也跑通了。...虽然小王因为编写测试用例稍微加班了一会,但是他感觉一身轻松,非常有安全感。 提测、发布一切正常,小王享受了一个愉快的周末。 下周回来之后述职,心情大好,状态极佳,得到老板们的赞赏。...现有的很多成熟的自动化测试框架完全可以模拟我们的手工操作,使用脚本自动运行测试用例,通常只需要几秒就能给出准确的反馈,同时还能侦听代码变化,自动执行项目中发生了变化的代码对应的测试用例,能够极大提高我们的开发效率...Augular 的默认测试框架就是 Karma + Jasmine,而 React 的默认测试框架是 Jest。 Jest 被各种 React 应用推荐和使用。

    4.4K11

    初尝 Jest 单元测试

    但Jest对React组件的快照则不同,其实是把一个组件给序列化成纯文本, 纯文本的比较,这个真是简单又高效呀。...对于一个React组件而言, 传入相同的props,我们是期望得到相同的输出, 这样子一来,通过构造不同的props, 我们即有了不同的测试用例。...理想状态中,组件若是无内部状态变化,测试用例覆盖率应该可以达到100%了。当然,仅仅是理想。...()调用就会与之比较,如有不同,则是用例失败,会打印出具体差异: image.png 如果是代码有修改,需要对应更新快速的话,则执行jest -u重新生成。...看起来,这样子添加测试用例,倒也不是很麻烦的样子,主要是snapshots的使用,有四两拨千斤效,不过重点在于其输入数据的构造。 可期。

    1.6K10

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

    它的原理就是在编写代码之前先编写测试用例,由测试来决定我们的代码。而且 TDD 更多地需要编写独立的测试用例,比如只测试一个组件的某个功能点,某个工具函数等。...TDD 的过程 编写测试用例 运行测试,测试失败 修改代码 测试通过 重构/优化代码 新增功能,重复上述步骤 image.png 在某种程度上,它可能在初学者看来是单调乏味或者不切实际的,但是严格按照这个步骤来做这件事...,让你自己决定测试用例是否对你的组件有帮助,会让测试用例变得有意义。...动态标题测试 创建一个测试用例: it('should have a dynamic title', () => { const title = '标题' const { getByText }...编写测试用例代码: it('should have an "OK" button', () => { const { getByRole } = render()

    2.2K10

    如何测试 React 异步组件?

    登录测试 先来实现登录页,先脑补一个效果图吧 我们先来写下测试用例 界面包含账号和密码输入框 接口请求包含 username 和 password 防止登录重复点击 登录成功跳转页面 登录失败显示错误信息...get*By* 函数获取dom 中的元素, 这里使用 getByPlaceholderText 以上测试用例只测试了登录函数,但是我们并未写登录成功或者失败的逻辑,接下来来我们通过 jest 的 mock...我们直接复制成功的测试用例,修改失败的逻辑。...测试用例: 失败后文档中显示服务端的消息 失败后按钮又显示登录并且可以点击 test("onSubmit failures", async () => { const message = "账号或密码错误...,我们在来写博客列表的测试已经不难了,我们先来写下测试用例: 接口请求中页面显示 loading 请求成功显示博客列表 列表为空显示暂无数据 请求失败显示服务端错误 博客列表代码 下面的代码中, 使用了

    3.3K50

    Jest单元测试之旅—实践总结

    单测也是这样,在前端领域内也是出现了很多单测工具,包括:Jest、Mocha、AVA;针对不同框架测试UI的库有:React Testing Library 、Vue Testing Library。...这里针对自身场景选择合适的工具既可以,因为我们业务主要使用React,而Jest和React Testing Library则是我们最佳的选择。下面也主要围绕该工具进行介绍。...如果一直没有调用会导致超时并且当前用例失败。 示例如下: // src/example2.ts import { wait } from '....toBeCalled(); }); }) 运行后发现fn被调用的0次,测试用例并没有通过。...在此我们可以通过对我们的测试用例进行微任务处理及可以把顺序“纠正”,修改后的测试用例: // tests/example5.test.ts import { asyncLoopTime } from '

    10.3K20

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

    它的原理就是在编写代码之前先编写测试用例,由测试来决定我们的代码。而且 TDD 更多地需要编写独立的测试用例,比如只测试一个组件的某个功能点,某个工具函数等。...TDD 的过程 编写测试用例 运行测试,测试失败 修改代码 测试通过 重构/优化代码 新增功能,重复上述步骤 在某种程度上,它可能在初学者看来是单调乏味或者不切实际的,但是严格按照这个步骤来做这件事,...让你自己决定测试用例是否对你的组件有帮助,会让测试用例变得有意义。...动态标题测试 创建一个测试用例: it('should have a dynamic title', () => { const title = '标题'; const { getByText...编写测试用例代码: it('should have an "OK" button', () => { const {getByRole} = render(

    2.1K10

    实战 | 初尝 Jest 单元测试

    但Jest对React组件的快照则不同,其实是把一个组件给序列化成纯文本, 纯文本的比较,这个真是简单又高效呀。...对于一个React组件而言, 传入相同的props,我们是期望得到相同的输出, 这样子一来,通过构造不同的props, 我们即有了不同的测试用例。...理想状态中,组件若是无内部状态变化,测试用例覆盖率应该可以达到100%了。当然,仅仅是理想。...,如有不同,则是用例失败,会打印出具体差异: 如果是代码有修改,需要对应更新快速的话,则执行jest -u重新生成。...从其需要的依赖来看, 它是直接支持jsx语法和es6语法的,跑了一个最简单的组件,it works! 再跑一个,发现失败了,报找不到文件。观察下出错信息,发现是有一些文件引用是依赖构建工具处理的。

    94710

    怎么给测试代码做抽象才是有意义的?

    不知道大家在写前端单测的时候,是否有出现测试代码和测试数据重复冗余的情况?然后不得不写一些函数和类来封装他们的。然而,慢慢地会发现:过度的封装会致使你的测试用例变得越来越难读。...为了能让你理解我这里说的 “用 ANA 写测试是不好的”,这里给你一个经典的样例,你来维护好它的代码库和测试用例。可能你现在会觉得这些测试用例也能保障代码质量,也还好。不过这样的用例真的没问题么?...用 AHA 思想来测 React 当测 React 组件时,我一般都会有一个 renderFoo 的函数专门用来充当 setup 的作用。...jest-in-case 和 test.each 如果你只是做纯函数的测试,那么你很幸运,因为它们都是最容易测的。你完全可以通过简单的抽象来简化测试代码,让它们在调用时更明显地展示输入和输出内容。...,我可能不会用这样方式写,不过,能直接在数组后面添加输入和输出就能添加更多的测试用例,感觉还是挺爽的。

    74820

    使用storybook管理React组件

    本文已React的UI组件为例,演示如何新建/集成Storybook到项目中,并对UI组件进行全方位的管理,包括发布、demo文档、测试等。 1....(最高版本是v6)运行会失败,这里选择安装的是babel6。...以一个分页组件为例 从团队的stoneUI组件库直接移植过来 将Pagination、IconV组件源码放入components目录; 编写story: import React from 'react...测试UI组件 4.1 写测试用例的原因 找到bug 新修改没有改变已有的接口和功能 将测试用例作为文档 4.2 测试结构 使用storyshots插件来实现,其核心是使用Jest,原理是每次生成一份DOM...-16'; enzymeConfigure({ adapter: new Adapter() }); 在stories/test.js中编写测试用例: import React from 'react

    3.4K20
    领券