「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」
什么是单元测试
基本概念
单元测试是软件工程中降低开发成本,提高软件质量常用方式之一,单元测试是一项由开发人员或者测试人员来对程序模块的正确性进行检验测试的工作,用于检查被测试代码的功能是否正确,养成单元测试的习惯,不但可以提高代码的质量,还可以提升自己的编程和技巧。 单元测试就是测试最小单元(一个方法,一个组件)
- 修改js模块功能,其它模块也受影响,很难快速定位bug
- 多人开发代码越来越难以维护,不方便迭代,代码无法重构
TDD & BDD测试
-
Test-Driven Development, 测试驱动开发
- 先编写测试用例代码,然后针对测试用例编写功能代码,使其能够通过
- 很好的诠释了代码即文档
- 清晰地了解软件的需求
-
Behavior Driven Development,行为驱动开发
- 系统业务专家、开发者、测试人员一起合作,分析软件的需求,然后将这些需求写成一个个的故事。开发者负责填充这些故事的内容
- 保证程序实现效果与用户需求一致。
jest + Vue Test Utils测试
- jest 是facebook推出的一款测试框架,集成了 Mocha,chai,jsdom,sinon等功能。
- Vue Test Utils 是 Vue.js 官方的单元测试实用工具库。
为什么选择 Jest
Jest 是 Facebook 出品的一个测试框架,相对其他测试框架,其一大特点就是就是内置了常用的测试工具,比如自带断言、测试覆盖率工具,实现了开箱即用。
而作为一个面向前端的测试框架, Jest 可以利用其特有的[快照测试]功能,通过比对 UI 代码生成的快照文件,实现对 React 等常见框架的自动测试。
此外, Jest 的测试用例是并行执行的,而且只执行发生改变的文件所对应的测试,提升了测试速度。目前在 Github 上其 star 数已经破万;而除了 Facebook 外,业内其他公司也开始从其它测试框架转向 Jest ,相信未来 Jest 的发展趋势仍会比较迅猛。
测试哪些功能
- 测试渲染的内容是否符合预期
- 测试事件执行后是否符合预期
- 测试事件是否能被调用
- 测试vue中自定义事件能否被触发
测试mock方法
- jest.fn (mock function)
- mock axios (mock ajax)
- jest.useFackTimers (mock timer)
- jest.runAllTimers
- jest.useRealTimers