Chai 库中 expect 和 should 使用总结

阅读时长 5 分钟读完

Chai 库中 expect 和 should 使用总结

在前端开发中,进行单元测试是一个十分重要的环节。而 Chai 是其中一个广受欢迎的断言库,它可以帮助我们断言测试结果是否符合预期,进而保证代码的可靠性和稳定性。而 Chai 库中的 expect 和 should 这两个断言方法是我们必须掌握的关键技能。

一、Chai 库

Chai 是一个 JavaScript 断言库,适用于 Node.js 和浏览器环境。它使得编写单元测试变得简单、流畅且有表达力。Chai 支持 BDD (Behavior Driven Development)、TDD (Test Driven Development) 和所谓的“支持性断言”。

相比其他断言库,Chai 有如下优势:

1.断言表达式友好:Chai 提供了自然语言风格的断言表达式,使得你的代码透露了测试意图和测试表达,即使是非技术人员也能够看懂。

2.不同的风格:Chai 提供了 expect、should 和 assert 三种断言风格。要求是,我可以轻松地编写符合我的编码风格的断言。关于 expect 和 should,详见下文。

3.可扩展度:Chai 通过提供 plugin API,支持自定义断言,因此可以更好地满足不同的业务需求。

二、expect

expect 是 Chai 中最常用、最管用的的断言方法。expect 方法包含以下三个组成部分:

1.基本语法:expect(value) 会产生一个断言对象,可以使用一系列所谓的“断言词”进行比较,比较范围可以是基础类型、对象和数组。

2.断言词:包括 to、be、been、is、that、which、and、has、have、with、at、of、same,基本涵盖了我们需要比较的情况。

3.产生结果:每一个 expect 对象都有一个 assert 方法来生成结果,如果 value 不符合断言词的条件,进行比较测试,那么就会抛出 AssertionError。

expect 的常用语句格式如下:

expect(value).to.xxx([args...])

其中,value 是我们要被测试的值,to 是断言词,xxx 则是需要使用的方法。接下来我们看两个实例进行讲解。

例1:基础类型的测试

我们使用 expect 断言库测试一个数值变量的大小是否符合预期:

其中,我们依次使用 be、at.most 和 at.least 来描述变量 value 的特性,最终的测试结果为通过。

例2:对象和数组的测试

我们使用 expect 断言库测试一个数组,并检验其中元素是否符合预期:

通过以上的语句,可以检查数组 arr 是否为数组、长度是否为 5,以及其中是否包含数字 3。这样一来,我们就可以在单元测试中完整地测试一个函数的结果,进而提升代码的可靠性和稳定性。

三、should

should 是除 expect 外,Chai 提供的一种更为神奇的链式语法的断言建构方法。should 在 chai 库中,应用最广泛,目的是帮助我们更加清晰地表达测试预期。

should 的形式非常优美和流畅,它使用以下语法:

通过 should 语句,我们可以以自然语言的方式开展测试,提示我们期望的结果和需要验证的事项。should 的优点在于使其风格更具语言化,更准确地表达了我们的预期。

例3:测试一个基础类型的值

我们使用 should 断言库测试一个数值变量的大小是否符合预期:

以上语句的意思是验证变量 value 是否是一个数值、以及 value 是否小于等于 20,即使得代码更加简洁明了,可读性更强。

例4:测试一个对象

我们使用 should 断言库测试一个对象,检查其属性和方法是否符合预期:

-- -------------------- ---- -------
----- ---- -
    ------------------
        --------- - -----
    -

    ----------
        ------ ----------
    -
-

----- --- - --- ----------- --------

-------------------------------------------------------
--------------------------------- --------

以上语句的作用是,创建一个对象 obj,并检查其是否包含名为'name'的属性,并且该属性的长度是否为11。所有的 should 语句都能够清晰地表明它的目的。

四、总结

在前端单元测试的过程中,Chai 库是我们必不可少的测试工具之一。而 expect 和 should 这两种断言方法也都各有优缺点,开发人员可以根据需要自行选择。

不管是哪种方法,关键都在于要清楚地定义测试需求,并使用最合适的断言方法进行测试。这样一来,我们就能够保证代码的可靠性和稳定性,进而提升软件开发的效率和质量。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64990cc848841e9894600b29

纠错
反馈