3种最好用的JavaScript单元测试工具知多少

如何对JavaScript程序代码进行单元测试?答案有很多,就如同世界上许多事情一样,总是存在诸多选择。

本篇文章重点描述几个当下比较受欢迎的JavaScript单元测试工具,也是笔者常用并且爱不释手的工具。

希望这篇文章能够帮助各位读者在启动和设置项目时节省时间,更高效地对JavaScript进行单元测试。

什么是JS中的单元测试

软件测试的经验法则是:如果我们编写的代码中有业务逻辑,那么它就需要测试。测试方法通常就是在想实现逻辑的步骤上启用断言。

所以,在大多数情况下,JavaScript单元测试与任何其他语言的单元测试没有什么不同。

对于任何具有web体验的应用程序,JavaScript将以某种方式成为该应用程序的一部分。即使整个项目的业务逻辑主要在后端,我们也不能忽略前端测试,尤其是为JavaScript代码库进行基础测试。

单元测试很大程度上确保了代码质量,同时也使重构变得更容易。

当我们用测试来验证应用程序行为时,或者编写测试以验证修复的bug时,这都会让我们很有成就感,从而也能更自信地更新代码。

JavaScript单元测试工具

Jest

Jest是一个JavaScript测试框架,它以零配置、并行测试为卖点,同时具有快照等特性,可以轻松捕获并保存大型项目的快照。

Jest由Facebook维护,最开始常常与ReactJS测试联系在一起。

Jest内置了很多特性,不仅可以适用于React,还适用于Vue、Angular、Node.js、TypeScript等项目。

Jest的诸多优点让它被戏称为:令人愉快的测试框架。

用Jest开始编写单元测试通常不需要任何配置,而且使用npm就能轻易安装:

npm install --save-dev jest

让Jest意识到测试文件的存在很简单,只需要编写一段代码,然后将它命名为“NAME.test.js”(扩展名为.test.js的文件将被Jest获取)。

Jest的API使用了单元测试中常见的语法,编写一个sum.test.js文件,比如像这样:

test('adds 1 + 2 to equal 3', () => {

  expect(sum(1, 2)).toBe(3);

});

还有其他语法或测试术语,比如用“describe”来形成一个作用域,创造性地去使用“it”而不是“test”,就像这样的风格:


describe("an area of code", () => {

  it("does what I expect", () => {

  expect(true).toBeTruthy();

  });

});

到目前为止,Jest是JavaScript单元测试领域的最受欢迎的一种框架,始终处于领先地位,几乎任何其他框架迁移到Jest都很容易实现,就像它可以在Jasmine中“按原样”工作,并且代码模块也可以从其他工具迁移。

Jasmine

Jest是在Jasmine的工作基础上实现的,在我们describe一个测试套件(test suite),或者使用其他语句实现逻辑过程时,Jasmine使用行为驱动开发(BDD)分类。

Jasmine提供了许多扩展包,可以在适用于各种开发环境,比如Jasmine for Ruby或Jasmine for Python,甚至还有一个浏览器内的测试运行程序。

Jasmine的独立发行版可以在浏览器中运行(通过HTML页面加载脚本、测试运行程序和测试脚本),所以如果你在JavaScript中进行单元测试,但没有npm/Node.js环境设置,Jasmine将会是一个很好的选择。

一个简单的Jasmine代码段:

describe(“My wonderful function”, function() {

   it(“should be very cool”, function() {

       expect(myfunction()).toEqual(“cool”);

   });

});

Jasmine能被灵活运用于在各种工具和测试运行程序之间,并且测它的语法格式使它们易于阅读,当然前提是代码编得很好并富有层次!

AVA

AVA是一个Node.js和JavaScript的测试运行程序,小而快,并且有友好的输出结果,比如当测试失败时突出显示异常。

AVA的语法格式与Jest或Jasmine有些不同:

const test = require('ava');

test('a is not b', t => {

    t.is("a", "b"); // This test will fail

});

AVA称自己个性化的不同为“神奇的断言”,确实,当我们查看测试输出时,它非常有用:

在这里插入图片描述

其他测试工具

除了这些比较流行的选择之外,还有很多JavaScript测试框架和工具,值得一提的是tape,它强调TAP原则(TAP:Test Anything Protocol测试任何协议)。

还有DOM测试库,它不是一个测试运行程序或测试框架,但当使用各种框架(或没有框架)为web ui编写测试时,它是一个非常有用的工具。

对于单元测试之外的JavaScript测试,JavaScript中的集成测试和终端测试也十分与必要,对于这些测试,除了通常所用的Selenium以外,还有有相当多的有趣工具等着我们发现!

例如,QA Wolf能在你的APP上使用浏览器时创建Jest测试代码!

如果我们想要确保客户端的代码质量,我们需要严格地对代码进行测试和实践。

幸运的是,有许多经过反复审查的工具可用来进行JavaScript单元测试,这使我们的测试工作能够事半功倍。

最后,希望笔者举出来的这些工具能够帮助更多读者进行JavaScript单元测试。

最后也给大家分享一份软件测试资料

上面的这些内容,对于软件测试的的朋友来说应该是最全面最完整的备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

关注我的微信公众号:程序员二黑,即可免费获取!

最困难的时候,也就是我们离成功不远的时候!如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们的群:785128166 大家一起讨论交流学习。

精彩推荐:

在职阿里6年,一个29岁女软件测试工程师的心声

公司新来的阿里p8,看了我做的APP和接口测试,甩给了我这份文档…

腾讯二面:web测试问题被虐哭了,直到学长给了我这些知识点…

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值