
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.4.2 AVA测试框架
当然,上面列举的框架都是非常好的,但本书更推荐使用AVA。
AVA是Node.js世界里的面向未来的测试运行器。从2014年11月19日开始,其在很长一段时间内停止更新,2015年9月8日之后才又开始大量提交代码。它的源码深受Tape和TAP语法的启发。相对而言,AVA是高度自由的,由于并行执行测试,每个测试文件都在独立的进程里执行,所以它的执行效率更高。AVA的默认报告几乎是一看就懂的,并且AVA依然支持TAP输出,通过一个CLI标记即可实现。
简单地说,AVA是Mocha的替代品,它的优点如下。
○ 轻量和高效,强化断言信息,堆栈跟踪简明。
○ 测试语法简单,语义简单,集众家之长。
○ 执行效率更高,使用I/O并发,保证了测试的原子性。
○ 没有隐藏的全局变量。
○ 为每个测试文件隔离环境。
○ 基于ES2015编写测试,对语法支持更好,也支持aysnc/await函数。
○ 支持Promise、Generator、async、Observable。
○ TAP输出显示是可选的。
虽然JavaScript是单线程的,但在Node.js里,其具有异步特性,I/O可以并行执行。AVA利用这个特性让测试可以并行执行,这对于I/O繁重的测试特别有用。另外,测试文件可以在不同的进程里并行运行,每一个测试文件都可以获得更好的性能和独立的环境。在Pageres项目中,从Mocha切换到AVA可以让测试时间从31s下降到11s。测试并发执行强制我们编写原子测试,这意味着测试不需要依赖全局状态或其他测试的状态,这是一件非常好的事情。
对比一下AVA和Mocha,其差异如表1-6所示。
表1-6
