使用 Chai 施行 TDD / BDD

阅读时长 5 分钟读完

在前端开发中,测试是非常重要的一个环节。TDD(测试驱动开发)和 BDD(行为驱动开发)是两种常用的测试方法,它们都是先写测试再写代码的方式,可以有效地保证代码的质量和稳定性。而 Chai 就是一款优秀的测试框架之一,它能够帮助我们更方便地实现 TDD / BDD。

本文将介绍如何使用 Chai 施行 TDD / BDD,包括如何进行断言、如何使用不同的匹配器等等,同时还将介绍如何在项目中使用 Chai 进行测试。

断言

测试的核心就是断言(Assertion)。断言就是在对代码进行测试的过程中,对代码的行为或者结果的正确性进行判断。在 Chai 中,有两种主要的断言方式:should 和 expect。顾名思义,should 是期望某件事情发生,而 expect 则是期望某个值被返回。

should

首先,我们来看一下 should 的用法。先通过命令行安装依赖:

然后在测试文件中引入 should:

接下来,我们就可以用 should 来进行断言了。我们可以用 should() 函数将一个对象包装起来,然后调用里面的一些方法来判断期望的结果。比如:

在以上代码中,我们先定义了一个字符串 foo,然后断言它是一个字符串(方法为 a)并且等于 'bar'。如果期望的结果与实际结果不相符,那么 should 就会抛出一个 AssertionError 异常。这样,我们就可以判断代码的正确性了。

expect

相比于 should,expect 更加常用。同样地,我们先安装依赖:

然后在测试文件中引入 expect:

然后就可以开始使用 expect 断言了。引入 expect 后,我们可以使用 expect() 函数将一个值传入其中,然后调用它的某些方法进行判断。比如:

这段代码和 should 的代码相同,只是语法稍有不同。使用 expect 第一次传入了 foo,然后调用了它的 to.be.a 和 to.equal 方法进行判断。

匹配器(Matcher)

无论是 should 还是 expect,都可以使用匹配器(Matcher)来进行更细致的判断。匹配器是具有特殊含义的字符串,通过它可以更加精确地指定要测试的内容。

比如说,我们可以使用 .not 来表示相反的意思。比如:

在这段代码中,我们判断 foo 是不是一个 number 类型。因为 foo 不是一个 number 类型,所以 expect 就会通过这个测试。

还有一些常见的匹配器,例如 .to.be.true, .to.be.false, .to.exist, .to.be.null, .to.be.undefined 等等。可以根据实际情况使用。当然, Chai 还提供了其他许多匹配器,你可以前往官方手册查询更多信息。

测试

在了解了 Chai 的基础用法和匹配器之后,我们就可以开始在项目中使用它来进行测试了。其实测试的过程非常简单,只需要将测试代码写在一个特定的目录中,然后调用测试代码即可。

以下是一个测试的示例代码:

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

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

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

在这个示例中,我们首先定义了一个函数 add,用于进行求和操作。然后我们在测试代码中调用这个函数,判断它的正确性。

在测试代码中,我们使用了 describe 和 it 两个函数。describe 是一个测试套件,用于说明要进行测试的内容,其第一个参数是套件的名称,其第二个参数是一个函数,用于包含测试用例。我们可以在测试用例中使用 it 函数进行测试。it 函数也可以包含一个函数,用于包含具体的测试代码。在这个测试用例中,我们定义了三个不同的测试代码,分别测试了 add 的三个参数组合,并检验了它们的正确性。

最后,我们就可以通过命令行来运行测试了:

mocha 是一个测试框架,用于运行测试代码。这里通过它来运行我们的测试文件,在执行后会输出测试结果。如果测试通过,那么输出的结果将会显示所有测试用例的执行时间,以及测试的总体成功率。如果测试失败,输出将会显示失败的详细信息。

总结

在本文中,我们介绍了如何使用 Chai 施行 TDD / BDD,并详细地介绍了断言、匹配器和测试三个方面。因为 TDD 和 BDD 的内容非常广,所以本文并没有进行太细致的探讨,建议读者在阅读本文之后,仔细学习相关内容,更好地使用 Chai 和测试的能力。

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

纠错
反馈