前言
对于现在的前端工程,一个标准完整的项目,通常情况单元测试是非常必要的。但很多时候我们只是完成了项目而忽略了项目测试。我认为其中一个很大的原因是很多人对单元测试认知不够,因此我写了这边文章,一方面期望通过这篇文章让你对单元测试有一个初步认识。另一个方面希望通过代码示例,让你掌握写单元测试实践能力。
前端为什么需要单元测试?
必要性:JavaScript缺少类型检查,编译期间无法定位到错误,单元测试可以帮助你测试多种异常情况。
正确性:测试可以验证代码的正确性,在上线前做到心里有底。
自动化:通过console虽然可以打印出内部信息,但是这是一次性的事情,下次测试还需要从头来过,效率不能得到保证。通过编写测试用例,可以做到一次编写,多次运行。
保证重构:互联网行业产品迭代速度很快,迭代后必然存在代码重构的过程,那怎么才能保证重构后代码的质量呢?有测试用例做后盾,就可以大胆的进行重构。
现状
下面是一份抽样调查片段,抽样依据如下:
向名相关者发出在线问卷调查,其中70人回答了问卷中的问题,前端人数占81.16%,
数据收集日期:.09.21—.10.08
目标群体:所有开发人员
组织规模:不到50人,50到人,人以上
你执行过JavaScript单元测试吗?
调查中的另一个有趣的见解是,在大型组织中单元测试更受欢迎。其中一个原因可能是,由于大型组织需要处理大规模的产品,以及频繁的功能迭代吧。这种持续的迭代方式,迫使他们进行自动化测试的投入。更具体地说,单元测试有助于增强产品的整体质量。
另外,报告显示超80%人认为单元测试可以有效的提高质量,超60%人使用过Jest去编写前端单元测试,超40%的人认为单元测试覆盖率是重要的且覆盖率应该大于80%。
常见单元测试工具
目前用的最多的前端单元测试框架主要有Mocha、Jest,但我推荐你使用Jest,因为Jest和Mocha相比,无论从githubstartsissues量,npm下载量相比,都有明显优势。
githubstars以及npm下载量的实时数据,
Githubstarsissues
npm下载量
Jest的下载量较大,一部分原因是因为create-react-app脚手架默认内置了Jest,而大部分react项目都是用它生成的。
从githubstartsissues以及npm下载量角度来看,Jest的