Mocha 与 Jest 测试框架比较
Author:zhoulujun Date:
https://andrew.codes/jest-vs-mocha-why-jest-wins
When developing front-end applications, my TDD tool belt consists of karma, mocha, sinon, and chai. When I first learned of Jest, I was skeptical of the new JavaScript unit testing framework. After a bit of research and a sample project, I will tell you why I decided to switch, and here's why you should, too.
Final Thoughts
Overall, I am quite impressed with Jest. I am impressed enough to adopt it as my standard for client-side unit testing and recommend it to anyone else working with TDD for front-end development. However, there was one noticeable drawback: it is a little slow to run your tests. Compared to mocha/karma, it takes longer to run your tests. How much longer? Noticeable. Too long? Up for debate. Honestly, with all the benefits it brings to the table, I am ok sacrificing a little bit of test runner speed.
Mocha 生态最好,但是需要较多的配置来实现高扩展性
Ava轻量、高效且简单,但自身不够稳定,并发运行文件多的时候会撑爆CPU
Jest 开箱即用
https://www.npmtrends.com/jest-vs-mocha-vs-ava
Stars | Issues | Version | Updated | Created | |
---|---|---|---|---|---|
jest | 38,766 | 1,075 | 28.0.3 | 3 days ago | 10 years ago |
mocha | 21,313 | 265 | 10.0.0 | a day ago | 10 years ago |
ava | 19,726 | 83 | 4.2.0 | 22 days ago | 8 years ago |
Mocha使用的断言库Chai, 支持BDD和TDD的写法 asset/expect
Jest只支持BDD写法 expect
具体选择哪个框架,视具体使用场景而定
基于React的前端工程的单元测试建议优先选用Jest;因为Jest是facebook出品,对React支持友好,且为Create-react-app的默认配置项
对于简单场景,三者都可以,视喜欢的写法而定;因为Jest开箱即用及BDD的写法,也会优先考虑Jest
一.Jest
具体可以参看:https://jestjs.io/zh-Hans/docs/25.x/getting-started
什么是Jest?
Jest是由facebook发布的,最近比较火热的一个测试框架。
Jest的优势
(1)Jest容易安装配置
Jest可以说是零配置的,它会自动识别一些测试文件。只要用npm安装jest之后运行jest,即可完成测试,非常容易。
一些常用的测试文件pattern,比如__test__ 、*.spec.js、 *.test.js等。我的nodejs项目的配置文件只有下面几行,下面是指package.json文件:
"scripts": { "test": "jest" }, "jest": { "testEnvironment": "node" }
testEnvironment这个配置是对于nodejs项目是必须的,如果不配置,在async的单元测试中如果抛出异常,则系统不会立刻停止,而只会超时,并且不会定位错误位置。
配置完后,就可以用yarn run test来运行测试了。
(2)Jest提供snapshot功能
snapshot功能能够确保UI不会意外被改变。Jest会把结果值保存在一个文件当中,每次进行测试的时候会把测试值与文件中的结果值进行比较,
如果两个结果值不同,那么开发者可以选择要么改变代码,要么替代结果文件。
(3)其他
除了上面所提到的优势,Jest还拥有着非常广阔的API而且更加适合测试React应用。
二.Mocha
什么是Mocha?
Mocha是JavaScript界中最受欢迎的一款单元测试框架。
Mocha的优势
(1)灵活性
Mocha比较灵活,和更多的一些库结合使用。
(2)资料较多
Mocha是比较年老的测试框架,在JavaScript界中更加广泛地使用。因此Mocha的community比较大,
可参考的文献较多,测试过程中遇到一些问题,可以上网查一查可以获取不少的帮助。
总结
Jest和Mocha都是非常优秀的两个测试框架,各有各自的长处与短处,没有哪一个比哪一个更强,开发者需要根据当前项目的需求,
能动的选择测试框架。以下是Jest和Mocha各自的常处于短处,希望能为选择测试框架提供一些参考资料。
转载本站文章《Mocha 与 Jest 测试框架比较》,
请注明出处:https://www.zhoulujun.cn/html/tools/TestTools/Mock/8801.html