一、为什么需要单元测试
单元测试是用来测试项目中的一个模块的功能,如函数、类、组件等。单元测试的作用有以下: - 正确性:可以验证代码的正确性,为上线前做更详细的准备;
- 自动化:测试用例可以整合到代码版本管理中,自动执行单元测试,避免每次手工操作;
- 解释性:能够为其他开发人员提供被测模块的文档参考,阅读测试用例可能比文档更完善;
- 驱动开发、指导设计:提前写好的单元测试能够指导开发的API设计,也能够提前发现设计中的问题;
- 保证重构:测试用例可以多次验证,当需要回归测试时能够节省大量时间。
二、如何写单元测试
测试原则 - 测试代码时,只考虑测试,不考虑内部实现
- 数据尽量模拟现实,越靠近现实越好
- 充分考虑数据的边界条件
- 对重点、复杂、核心代码,重点测试
- 测试、功能开发相结合,有利于设计和代码重构
编写步骤 - 准备阶段:构造参数,创建 spy 等
- 执行阶段:用构造好的参数执行被测试代码
- 断言阶段:用实际得到的结果与期望的结果比较,以判断该测试是否正常
- 清理阶段:清理准备阶段对外部环境的影响,移除在准备阶段创建的 spy 等
三、测试工具
单元测试的工具可分为三类: - 测试运行器(Test Runner):可以模拟各种浏览器环境,自定义配置测试框架和断言库等,如Karma.
- 测试框架:提供单元测试的功能模块,常见的框架有Jest, mocha, Jasmine, QUnit.
- 工具库:assert, should.js, expect.js, chai.js等断言库,enzyme渲染库,Istanbul覆盖率计算。
这里,我们将使用 Jest 作为例子。Jest 功能全面,集成了各种工具,且配置简单,甚至零配置直接使用。
四、Jest入门
Jest 官网的描述是这样的: Jest is a delightful JavaScript Testing Framework with a focus on simplicity.
安装
yarn add --dev jest# or# npm install -D jest
简单示例
从官网提供的示例开始,测试一个函数,这个函数完成两个数字的相加,创建一个 sum.js 文件 下载地址: vue使用pdf.js预览pdf文件的方法 HTML中用JS实现旋转的圣诞树 |