单元测试的重要性
单元测试是在模块层面上测试实现的代码的过程。单元测试允许你确保你开发的模块满足业务文件所规定的要求。这些测试在每个模块创建时都会被写入。在每一个新的模块开发后,都要运行整个测试案例套件,以确保现有的模块不会受到开发的模块的影响。
如果不遵循正确的惯例,Javascript开发可能会变得相当无序。前台的Javascript单元测试主要在实际或无头的浏览器上运行。
这些测试的重点是测试应用程序的可用性和响应性。后台单元测试框架侧重于测试基于NodeJS的后端代码的业务逻辑和服务端点。
MochaJS
MochaJS是最流行的测试框架,支持后端和前端测试。MochaJS可以根据你的需要开发测试。它在Chrome v8引擎或任何其他浏览器上异步运行测试。
Mocha的主要优点包括:
- 适用于前端和后端
- 支持NodeJS调试器
- 根据开发者的方便来开发测试
- 支持任何浏览器,包括无头的chrome
- 支持对象mock以执行灵活的后端测试
https://github.com/mochajs/mocha
Jasmine
Jasmine是一个用户行为模仿器,允许你在你的网站上执行与用户行为类似的测试案例。Jasmine对于测试前端的可见性、点击清晰度以及UI在不同分辨率下的响应性非常有用。Jasmine允许用自定义延迟和等待时间来自动化用户行为,以模拟实际的用户行为。
使用Jasmine的主要好处包括。
- 由于外部依赖性几乎为零,因此开销较低
- 开箱即用,几乎包含了所有需要的工具
- 支持前端和后端测试
- 编码与用自然语言编写相当相似
- 广泛的文档,可与多个框架一起使用
https://github.com/jasmine/jasmine
AVA
AVA是一个简约的轻量级测试框架,利用了Javascript的异步性。AVA可以并发地执行测试。
它允许你几乎完全控制你所做的事情。它主要专注于运行基于NodeJS代码的测试。它的一些好处包括
- 占用空间小使其速度更快
- 异步和并发地运行测试
- 比大多数其他测试框架更快
- 测试的语法更简单
- 对检测到的任何潜在错误有更干净的堆栈跟踪
JEST
JEST是最流行的框架之一,由Facebook定期维护。它是基于React的应用程序的首选框架,因为它需要零配置。
然而,它并不限于与React一起使用。JEST的一些特点是。
- 适用于NodeJS、VueJS、React、Angular和其他基于Babel的项目的单一框架
- 更容易落地
- 良好的文档和标准的编码语法
- 通过实时快照,它可以管理具有较大对象的测试
https://github.com/facebook/jest
Karma
Karma是一个富有成效的测试环境,它本身支持所有流行的测试描述框架。它为你的应用程序提供了在不同环境下执行测试的支持。它广泛支持在不同设备和应用程序上执行测试。
选择Karma的主要因素在于它支持与CI/CD引擎集成,并具有以下特点。
- 可用于在浏览器、PhantomJS等无头环境以及设备上运行测试
- 支持用大多数流行框架编写的测试
- 允许在其他设备上远程运行测试,只需上传文件即可
- 支持使用Chrome和Webstorm进行测试案例调试。
https://github.com/karma-runner/karma
Tape
Tape在架构上与AVA相当相似。它不支持globals,因此你需要在每个测试文件中包含Tape。这种限制变量球化的决定也有其好处。其中的一些特点突出。
- 清晰的轻量级足迹
- 只提供裸机代码,让开发者完全自由地编写测试案例
- 支持ES6、Typescript和咖啡脚本标准
- 支持在大多数现代浏览器上执行测试
https://github.com/substack/tape
Cypress.io
Cypress是一个令人兴奋的测试框架,实际上是在浏览器上运行。它以网页的形式在浏览器上提供一个交互式UI。它可以很容易地安装在Mac、Windows以及Linux上。它是一个独立的测试运行器,不需要与你的代码紧密结合。
Puppeteer是一个优秀的测试执行框架,由谷歌的一个团队建立。它为NodeJS应用程序提供了一个无头的chrome API。
https://github.com/cypress-io/cypress
puppeteer
Puppeteer主要用于针对浏览器的应用,如爬行测试、页面结构测试、截图,甚至为单页应用捕获预渲染内容。使用puppeteer的其他好处是。
- 能够为浏览器设置自定义分辨率和尺寸
- 支持测试chrome扩展程序
- 对表单提交、UI测试和键盘输入的自动化支持
- 支持ES6功能,如 await和async
https://github.com/puppeteer/puppeteer
python版本:https://github.com/pyppeteer/pyppeteer
ChaiJS
ChaiJS框架专注于行为驱动的测试。它可以与任何其他框架并行使用。它已经存在了相当长的时间,并随着Javascript标准的演变而发展。
ChaiJS可以和Node、浏览器、Rail一起使用,并且有强大的支持社区和文档。
https://github.com/chaijs/chai
Qunit
Qunit - 一个强大的测试框架,专门用于前端。它是JQuery、JQuery Mobile和JQuery UI库的开发者的首选。
它可以被写成一个独立的JS文件并在任何网页上执行。使用Qunit测试的标准方法是将文件包含到网页上,并使用Qunit插件运行测试。Qunit的好处包括。
- 可用于构建可重复使用的测试脚本
- 提供一个随时可以部署的网页界面,用于直观地查看测试案例的输出结果
- 构建在它之上的插件池允许更快的测试案例开发。
Sinon
Sinon.js是单元测试框架的补充,用于伪造/模拟真实的东西。因为在测试过程中--你不会有所有的数据! 它支持Chrome、IE 11、Firefox、Edge、Safari和Node.js运行机制。
Sinon的一个好的替代品是testdouble.js。