• home > tools > TestTools > Mock >

    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 k

    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


    StarsIssuesVersionUpdatedCreated
    jest38,7661,07528.0.33 days ago10 years ago
    mocha21,31326510.0.0a day ago10 years ago
    ava19,726834.2.022 days ago8 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

    上一篇:yapi使用笔记
    下一篇:最后一页