- 什么是单元测试,为何要用
单元测试是用来确认某段代码或模块或接口是否适合使用。随着项目规模的增加,函数、方法、变量都在递增,各种Bug报告会让原本整洁的代码变得一片混乱。对项目代码进行重构时,如何确定项目仅仅是被重构了,而不是被改写了?此时单元测试将是一根救命稻草,它是一个衡量标准,告诉开发人员这么做是否将改变结果。保证了产品的安全性和稳定性。 测试框架通常提供TDD(测试驱动开发)或BDD(行为驱动开发)的测试语法来编写测试用例。
BDD(行为驱动开发)的重点是通过与利益相关者的讨论取得对预期的软件行为的清醒认识。它通过用自然语言书写非程序员可读的测试用例扩展了测试驱动开发方法。TDD(测试驱动开发)需要遵循如下规则:
- 写一个单元测试去描述程序的一个方面。
- 运行它应该会失败,因为程序还缺少这个特性。
- 为这个程序添加一些尽可能简单的代码保证测试通过。
- 重构这部分代码,直到代码没有重复、代码责任清晰并且结构简单。
- 持续重复这样做,积累代码。
衡量是否使用了TDD的一个重要标准是测试对代码的覆盖率,覆盖率在80%以下说明一个团队没有充分掌握TDD
JS测试主要使用到的工具是测试框架、断言库以及代码覆盖率工具:
- 测试框架:Mocha,Jasmine,Jest,Karma
- 断言库:Chai,Should,assert,Jasmine,Jest
- 代码覆盖工具:Istanbul,Jest,Karma-Coverage
三种工具各选一个配合使用,一般常见为mocha+chai、mocha+should、jest
- 浏览器测试工具
对于浏览器里跑的前端代码,做测试要比Node.js模块要麻烦得多。Node.js模块纯js代码,使用V8运行在本地,测试用的各种各样的依赖和工具都能快速的安装,而前端代码不仅仅要测试js,CSS等等,更麻烦的事需要模拟各种各样的浏览器。
前端代码是运行在浏览器中的,要对其进行单元测试,只能将其运行在浏览器上。目前大部分测试工具都支持调用和运行本地浏览器来进行测试,但如果你的测试仅仅是针对函数和模块的单元测试,则完全可以使用一款无界面的浏览器,工具:Puppeteer,Phantom。相关链接:https://cloud.tencent.com/community/article/529168 - 常用语法
- mocha提供API。describe块称为”测试套件”(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称(”index.js的测试”),第二个参数是一个实际执行的函数。
- it块称为”测试用例”(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称(”1应该是数字”),第二个参数是一个实际执行的函数。
- puppeteer功能
- 利用网页生成PDF、图片
- 爬取SPA应用,并生成预渲染内容(即“SSR” 服务端渲染)
- 可以从网站抓取内容
- 自动化表单提交、UI测试、键盘输入等
- 帮你创建一个最新的自动化测试环境(chrome),可以直接在此运行测试用例
- 捕获站点的时间线,以便追踪你的网站,帮助分析网站性能问题。
- 7.
前端单元测试
最新推荐文章于 2023-06-01 13:08:09 发布