测试工具Testing
为什么需要测试?
Web应用程序越来越复杂,这意味着有更多的可能出错。测试是帮助我们提高代码质量、降低错误的最好方法和工具之一。通过测试提供软件的质量,在开始的时候,可能会降低开发速度。但是从长期看,尤其是那种代码需要长期维护、不断开发的情况,测试会大大加快开发速度,减轻维护难度。
单元测试是什么?
单元测试(unit testing)指的是以软件的单元(unit)为单位,对软件进行测试。单元可以是一个函数,也可以是一个模块或组件。它的基本特征就是,只要输入不变,必定返回同样的输出。
实例
import test from 'ava'
import tools from '../../service/tools'
/** 获取指定位数的随机数字符串 */
test('getRandom', t => {
// 自然数
let result = tools.getRandom(6);
t.is(result.length, 6);
// 1000位
result = tools.getRandom(1000);
t.is(result.length, 1000);
// 小数
result = tools.getRandom(6.8);
t.is(result.length, 6);
// 负数
result = tools.getRandom(-6.8);
t.is(result.length, 0);
// 字符串
result = tools.getRandom('abc');
t.is(result.length, 0);
// null
result = tools.getRandom(null);
t.is(result.length, 0);
// undefined
result = tools.getRandom(undefined);
t.is(result.length, 0);
});
测试框架
所谓”测试框架”,就是运行测试的工具。通过它,可以为JavaScript应用添加测试,从而保证代码的质量。
JEST
Jest是 Facebook 的一套开源的 JavaScript 测试框架, 它自动集成了断言、JSDom、覆盖率报告等开发者所需要的所有测试工具,是一款几乎零配置的测试框架。并且它对同样是 Facebook 的开源前端框架 React 的测试十分友好。
react-testing-library
暂时只知道这是个测试框架
cypress
cypress是在mocha式API基础上构建的一套开箱可用的E2E(端到端即黑盒测试)测试框架,对比其他测试框架,它提供一套自己的最佳实践方案,无需其他测试工具库,配置方便简单但功能异常强大,可以使用webpack项目配置,还提供了一个强大的GUI图形工具。
Enzyme
Enzyme是由Airbnb开源的一个React的JavaScript测试工具,使React组件的输出更加容易extrapolate 。Enzyme的API和jQuery操作DOM一样灵活易用,因为它使用的是cheerio库来解析虚拟DOM,而cheerio的目标则是做服务器端的jQuery。Enzyme兼容大多数断言库和测试框架,如chai、mocha、jasmine等。
Mocha
Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用。
Chai
暂时只知道这是个测试框架
Ava
暂时只知道这是个测试框架
Jasmine
Jasmine的开发团队来自PivotalLabs,他们一开始开发的JavaScript测试框架是JsUnit,来源于著名的JAVA测试框架JUnit。JsUnit是xUnit的JavaScript实现。但是JsUnit在2009年后就已经停止维护了,他们推出了一个新的BDD框架Jasmine。Jasmine不依赖于任何框架,所以适用于所有的Javascript代码。