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

如何对第一个Vue.js组件进行单元测试 (上)

在本教程中,我们将使用Vue Test Utils——官方Vue.js测试工具包,以及Jest,一个由Facebook支持JavaScript测试运行器。   ...Vue Test Utils允许您单独安装Vue组件并模拟用户交互。它有测试单个文件组件所需所有实用程序,包括使用Vue Router或Vuex实用程序。   ...Jest是一个功能齐全测试运行器,几乎不需要配置。它还提供了一个内置断言库。   Vue CLI 3(我用它来生成样板文件)允许您选择自己喜欢测试运行器,并设置好它。...因此,我们测试我们可以从组件外部访问内容:   交互   道具变化   我们不会直接测试计算属性、方法或钩子(hooks)。这些将通过测试公共接口进行隐性测试。   ...确定测试方案   当我们从外部看评级时,我们可以看到它在执行以下操作:   它呈现stars列表等于用户传递maxStars道具属性;   它为每个star添加一个活动,其索引值小于或等于用户传递

2K20

2021年React学习路线图

组件是高度具体并且通常孤立代码片段。每个组件最好处理一件事情,通过参数和上下文共享数据。例如,你可能有单个头部组件,仅用来渲染导航链接。...从四部分来理解组件: 学习组件之间数据通讯 从组件角度想象一个页面 生命周期和状态 函数和组件 你应该理解属性概念,它是怎么传递到子组件,怎么使用 PropTypes 来进行类型检查。...React Hook 是 React 16.8 引入新特性。它用在函数组件中,允许开发者不使用情况下,使用状态和其他特性。 之前,函数组件是无状态,状态和生命周期用在组件中。...学习 React 中它是可选,但仍然是一个好用库。 3.2 测试 Jest - 简单 JavaScript 测试框架。 Jest 是一个简单 JavaScript 测试框架,它注重简单性。...编写测试很重要,根据我经验,通常比编写实际代码更难。 您应该学习最流行测试库,如 Jest 和 Enzyme,以及如何使用库(如 Sinon )模拟 API 调用。

7.5K21
您找到你想要的搜索结果了吗?
是的
没有找到

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

本篇教程是 JavaScript 测试系列实战 第一篇教程,首先介绍了测试类型,然后主要通过一个 React 项目教会你如何使用 Jest 编写第一个测试,然后使用 Enzyme 对 React 组件进行浅层渲染...函数,它接受一个表达式,然后后面可以调用 Matcher 来测试该表达式是否符合条件,例如这里我们就使用了最常用 toBe Matcher;Jest 还提供了大量 Matcher,可以帮助我们写出更简洁可读断言语句...因此这里建议直接使用 npx jest 执行测试。 编写第一组测试 每个测试文件通常有多个测试用例。Jest 允许我们通过 describe 函数对测试用例进行分组,它创建了一个可以组合多个测试块。...它允许我们在运行测试时,渲染父组件而不渲染其所有的子组件。浅层渲染十分快速,因此非常适合单元测试。...我们将在下一篇教程中讲解如何去更“深层”地去测试我们组件

2.9K10

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

在选择器中,BEM要求使用名,不允许使用id,由以下三种符号来表示扩展关系: 中划线( - ) :仅作为连字符使用,表示某个块或者某个子元素多单词之间连接记号。...组件将数据、视图和逻辑封装起来,仅仅暴露出需要接口和属性,第三方可以完全黑盒调用,不需要去关注组件内部实现,很大程度上降低了系统各个功能耦合性,并且提高了功能内部聚合性。...“怎么要写这么长测试代码啊” ——这是一劳永逸并且每次需求变更后,你都可通过单元测试来验证,逻辑代码是否依旧正确。...; - 属性 `visible` 控制组件是否可见。...### 组件式引入 - 可以提前插入dom结构,如果浮层中有图片的话会先加载; - 属性 `visible` 控制组件是否可见。 import Button from '../..

4.2K112

Jest + React Testing Library 单测总结

一时不知道该如何下手,也不知道如何编写有效单测,人有点懵,于是就比较粗略地研究了一下前端组件单测。...1.2 测试框架和 UI 组件测试工具 而说起前端测试框架和工具,比较主流 JavaScript 测试框架有 Jest、Jasmine、Mocha 等等,并且还有一些 UI 组件测试工具,比如 testing-libraray...1.3 组件单测须知 在开始进行组件单测时候,有几个因素我们需要考虑: 组件是否按照既定条件 / 逻辑进行渲染 组件事件回调是否正确 异步接口如何校验 异步执行完毕后操作如何校验 .........在组件单测中,有的时候我们可能关注一个函数是否被正确地调用了,或者只想要某个函数返回值来支持该组件渲染逻辑是否正确,而并不关心这个函数本身逻辑。...,并且最终确实被找到当 promise resolves 并且组件重新渲染之后。

4.5K20

前端工程化实践总结 |

在选择器中,BEM要求使用名,不允许使用id,由以下三种符号来表示扩展关系: 中划线( - ) :仅作为连字符使用,表示某个块或者某个子元素多单词之间连接记号。...组件将数据、视图和逻辑封装起来,仅仅暴露出需要接口和属性,第三方可以完全黑盒调用,不需要去关注组件内部实现,很大程度上降低了系统各个功能耦合性,并且提高了功能内部聚合性。...1.构建 在前端项目开发中我们使用了模块化方案,有可能还引入了组件机制,依赖一些开发框架,这个时候就需要对项目进行构建,构建一般可以包括这几个步骤: 代码转换:允许使用更高级JavaScript...“怎么要写这么长测试代码啊” ——这是一劳永逸并且每次需求变更后,你都可通过单元测试来验证,逻辑代码是否依旧正确。...; - 属性 `visible` 控制组件是否可见。

4.4K41

React Hook测试指南

(object-oriented programming)里面单元是(class)方法(method),我们一般不推荐将某个或者某个模块直接作为单元测试单元,因为这会使被测试逻辑过于庞大,而且问题出现时不容易进行定位...如何对自定义Hook进行单元测试 在React Hook实战指南中我们提到Hook就是一些函数,所以对Hook进行单元测试其实是对一个函数进行测试,只不过这个函数和普通函数区别是它拥有React给它赋予特殊功能...项目引入jest 了解完jest一些基本API之后我们再来看一下如何在我们项目里面引入jest。...options另外一个属性是wrapper,它用来指定TestComponent父级组件(Wrapper Component),这个组件可以是一些ContextProvider等用来为TestComponent...总结 在本篇文章中我给大家介绍了什么叫做单元测试,为什么我们需要在自己项目里面引入单元测试以及教大家如何使用Jest和react-hooks-testing-library来测试我们自定义hook。

1.7K10

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

而针对与我们前端来说,我认为单测就是:UI测试和逻辑测试,逻辑测试包含:工具/函数、业务相关代码测试。UI测试分为:公共组件和业务组件测试。 为什么要写单元测试?...%lines:行覆盖率,是否每一行都覆盖到了 我们可以通过查看报告来发现我们未覆盖代码 搭建单元测试环境 在我们使用大部分前端框架时其实已经内置了jest环境,如vue-cli/umi等,所以并不需要大家从...,并且描述接下来我们要测试内容。...使用,而在我们测试环境下因为没有直接在浏览器上操作,所以并不能直接访问此类属性或方法,但得益于jsdom,它提供了强大web沙箱环境让我们能直接模拟真实web环境。...在中我们可以使用private对方法进行私有化,此时我们在单测时没办法直接访问或者模拟。需要通过对私有成员使用数组访问或者通过prototype属性进行模拟。

10.2K20

react生态下jest单元测试

Enzyme: React测试库Enzyme提供了一套简洁强大API,并通过jQuery风格方式进行DOM处理,开发体验十分友好。不仅在开源社区有超高人气,同时也获得了React官方推荐。...后面每次再运行快照测试时,都会和第一次比较,若组件代码有所改变,则快照测试会失败,如果组件代码是最新,优化过得代码,则需要更新快照,免得每次执行报错。...、断言或是进行 snapshot 测试 //React 组件 render 结果是一个组件树,并且整个树最终会被解析成一个纯粹由 HTML 元素构成树形结构 it("renders correctly...如果尝试对这些对象进行快照,它们将强制快照在每次运行时失败. //2.Jest允许为任何属性提供非对称匹配器。...如果尝试对这些对象进行快照,它们将强制快照在每次运行时失败. //2.Jest允许为任何属性提供非对称匹配器。

2.2K20

40道ReactJS 面试问题及答案

它们是只读(不可变),有助于使组件可重用和可定制。 Props 作为属性传递给组件并且可以使用组件 this.props 在组件内进行访问,或者作为函数组件参数进行访问。 5....如何用动态键名设置状态? 要在 React 中使用动态键名称设置状态,可以在 ES6 中使用计算属性名称。计算属性名称允许使用表达式来指定对象文字中属性名称。...React 中 Children 属性是一个特殊属性,它允许您将子组件或元素传递给父组件。这使您可以创建灵活、可重用组件,并可以使用任何内容进行自定义。...:为组件编写测试涉及使用 Jest 和 React 测试库等测试库来确保组件按预期运行。...这些测试可以单独检查每个组件渲染、行为和状态。 让我们使用 Jest 和 React 测试库为此 Button 组件编写一些单元测试用例。

19510

前端测试体系建设与最佳实践总结

单元测试:是指对软件中最小可测试单元进行检查和验证,通常指的是独立测试单个函数。 UI 测试:是对图形交互界面的测试。 集成测试:就是测试应用中不同模块如何集成,如何一起工作,这和它名字一致。...Augular 默认测试框架就是 Karma + Jasmine,而 React 默认测试框架是 Jest. Jest 被各种 React 应用推荐和使用。...e2e,并与 src 同放在根目录下 VScode 和 WebStorm 都有对应 Jest 插件,安装后书写代码时有代码补全,debug 和自动运行等功能 如何编写测试 其实,Jest 语法蛮简单...connect 包裹后高阶组件 尽管理论上 components 里面的公共组件都应该是无状态组件,但是有时候有些公用组件写成有状态组件可能更容易被使用,开发成本更低。...任何一件事情我们都需要平衡成本和收益,就像上文提到,成本低单元测试尽可能全量覆盖,而高成本 UI 测试做公共组件覆盖。

5.3K30

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

实际上,第一个并不关心按钮是否正确地连接到方法。它查看实现本身,也就是说,您递增和递减方法执行之后,应用状态是否正确。这就是代码损坏,测试也会通过。...(CV也是可以?) 1.如何创建测试快照 快照,顾名思义,允许我们保存给定组件快照。当您进行更新或重构,并希望获取或比较更改时,它会提供很多帮助。 现在,让我们看一下 App.js 文件快照。...这里,像往常一样,我们使用 getByTestId 选择元素和检查第一个测试如果按钮禁用属性。对于第二个,如果按钮是否被禁用。 如果您保存文件或在终端纱线测试中再次运行,测试将通过。...但是这一次,它接收作为参数组件。为了创建新上下文,我们将CounterContext传递给 Provider。 现在,我们可以测试计数器最初是否等于0。那么,计数器增减是否正确呢?...现在我们要测试三件事: •如果HTTP请求已经正确完成•如果使用url完成了HTTP请求•如果获取数据符合期望。 对于第一个测试,我们检查加载消息在没有数据要显示时是否显示。

14.8K33

JavaScript 测试系列实战(三):使用 Mock 模拟模块并处理组件交互

在之前两篇教程中,我们学会了如何测试最简单 React 组件。在实际开发中,我们组件经常需要从外部 API 获取数据,并且组件交互逻辑也往往更复杂。...在这篇教程中,我们将学习如何测试更复杂组件,包括用 Mock 去编写涉及外部 API 测试,以及通过 Enzyme 来轻松模拟组件交互 初次尝试 Jest Mock 我们应用程序通常需要从外部...打开 TodoList 测试文件,首先在最前面通过 jest.mock 配置 axios 模块 Mock(确保要在 import TodoList 之前),在 Mock 之后,无论在测试还是组件使用都将是...首先通过 jest.spyOn,我们便可以监听一个函数使用情况,然后使用配套 toBeCalled Matcher 来判断该函数是否被调用。整体代码十分简洁,同时也保持了很好可读性。...不幸是,测试钩子并没有那么简单。在本文中,我们研究了如何使用 react-hooks-testing-library[2] 处理它。

4.8K20

Vue 应用单元测试策略与实践 06 - 如何落地几点建议

既然都有了 OKR 支持,那么也就意味着,公司允许大家学习单元测试可能付出成本,投入了成本当然就意味着潜在收益。那么如何快速获得收益,就成了下一个话题。 2....,**使用静态类型系统和 linter **就是我们最初诱饵,ESLint 能够捕获拼写或语法之类基本错误,并且大多数情况下 ESLint 往往都能通过 --fix 进行自动修复(配合 VSCode...TDD(测试驱动开发)步骤如下,能够时刻给予开发者反馈,从而坚持下去: 没有单元测试,不实现任何功能代码; 编写仅能代表一种失败情况测试代码; 编写恰好能通过单元测试产品代码。 ?...## 单元测试基础 ### 单元测试与自动化意义 ### 为什么选择 Jest ### Jest 基本用法 ### 该如何测试异步代码?...架构 ### 如何对 Vuex 进行单元测试 ### Vue组件和Vuex store交互 ## Vue 应用测试策略 ### 单元测试特点及其位置 ### 测试奖杯?

86930

尤雨溪向 React 推荐自己研发 Vite,网友:用第三方工具没有任何意义

期间,Vue.js 作者尤雨溪发布推特称,新 React 文档应该向初学者推荐 Vite 而不是 CRA——或者如果需要使用 ESLint 或测试,至少也该推荐一个基于 Vite 自定义模板(也应该使用...有开发者留言称:React 围绕自身创建了自己工具(jest、CRA、测试库)。许多项目仍在使用它们。推荐第三方工具没有任何意义(不管是否为了初学者),无论其他看起来多好,都要维护自己工具。...尤雨溪还补充道,“我当然有偏见,但我很想知道是否有任何正当理由来坚持使用 CRA。”...开发者 Oleg Goncharenko 从 React 与 Vue.js 如何创建组件、各组件之间如何相互通信,以及组件如何影响浏览器 DOM 三个方面做了分析。...总的来说,React 要求开发者拥有扎实JS技能,而 Vue.js 对新手开发者更加友好。与React类似,Vue.js也支持使用JSX编写,但其组件是用HTML模板编写而成。

1.4K10

用TypeScript编写React最佳实践

不要担心,本文我们来总结一下两者结合使用最佳实践。 React 和 TypeScript 如何一起使用 在开始之前,让我们回顾一下 React 和 TypeScript 是如何一起工作。...声明文件,可以进行允许引用 SVG 这样配置 tsconfig.json 幸运是,最新 React/TypeScript 会自动生成 tsconfig.json ,并且默认带有一些最基本配置。...": true, // 允许使用 .json 扩展名导入模块 "noEmit": true, // 不输出(意思是不编译代码,执行类型检查) "jsx": "react", // 在...组件 React 核心概念之一是组件。在这里,我们将引用 React v16.8 以后标准组件,这意味着使用 Hook 而不是组件。 通常,一个基本组件有很多需要关注地方。...但是你可能想要修改一两个属性。还记得我们如何看待两种类型组件 Props、type 或 interfaces 方法吗?取决于你使用组件决定了你如何扩展组件 Props 。

4.6K51

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

Jest 是一款轻量 JavaScript 测试框架,它卖点是简单好用,由 facebook 出品。本文就简单讲讲如何使用 Jest 对 React 组件进行测试。 为什么需要单元测试?...单元测试(Unit Testing),指的是对程序中模块(最小单位)进行检查和验证。比如一个函数、一个、一个组件,它们都是模块。 使用单元测试优点: 更好地交付高质量代码。...可以通过设置 Jest 配置文件 testMatch 或 testRegex 选项进行修改,或者 package.json 下 "jest" 属性。...Jest 基本使用 我们先写一个简单函数,作为被测试模块。...但 Jest 本身并不支持 React 组件测试 API,需要使用另外一个内置 React Testing Library 库来测试 React 组件

2.8K20

如何测试驱动开发 React 组件

原理就是在编写代码之前先编写测试用例,由测试来决定我们代码。而且 TDD 更多地需要编写独立测试用例,比如测试一个组件某个功能点,某个工具函数等。...,让你自己决定测试用例是否对你组件有帮助,会让测试用例变得有意义。...本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...确保渲染测试 第一个测试相当抽象。仅仅需要检查组件是否展现(任何东西) ,以确保这个组件是存在。但是实际上,我将要测试组件还不存在。...例如点击按钮,就是 role="button" ;会让这个元素可点击;也可以使用 role 属性告诉辅助设备(如屏幕阅读器)这个元素所扮演角色。

2.2K10

如何做前端单元测试

另外,报告显示超 80% 人认为单元测试可以有效提高质量,超 60% 人使用Jest 去编写前端单元测试,超 40% 的人认为单元测试覆盖率是重要且覆盖率应该大于 80%。...常见单元测试工具 目前用最多前端单元测试框架主要有 Mocha (https://mochajs.cn/)、Jest (https://www.jestjs.cn/),但我推荐你使用 Jest,因为...都有很大优势,因此推荐你使用开箱即用 Jest 如何开始?.../sum'; test('sum(2, 4) 不等于 5', () => { expect(sum(2, 4)).not.toBe(5); }) .toEqual 匹配器会递归检查对象所有属性属性是否相等...(3); }) .toThorw 能够让我们测试测试方法是否按照预期抛出异常 但是需要注意是:我们必须使用一个函数将被测试函数做一个包装,正如下面 getIntArrayWrapFn 所做那样

3.2K20

如何测试驱动开发 React 组件

原理就是在编写代码之前先编写测试用例,由测试来决定我们代码。而且 TDD 更多地需要编写独立测试用例,比如测试一个组件某个功能点,某个工具函数等。...让你自己决定测试用例是否对你组件有帮助,会让测试用例变得有意义。...本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...确保渲染测试 第一个测试相当抽象。仅仅需要检查组件是否展现(任何东西) ,以确保这个组件是存在。但是实际上,我将测试组件还不存在。...例如点击按钮,就是 role="button" ;会让这个元素可点击;也可以使用 role 属性告诉辅助设备(如屏幕阅读器)这个元素所扮演角色。

2.1K10
领券