Chai 测试是否抛出异常

阅读时长 5 分钟读完

在前端的开发过程中,我们不仅要编写正确的代码,还要编写可以正确处理异常情况的代码。因此,测试是极其重要的一步,而 Chai 是一款十分流行的 JavaScript 测试库,它不仅提供了断言语句以检测一段代码输出是否与期望相符,还可以轻松地测试代码是否能够正确处理异常情况。

本文将会介绍如何使用 Chai 来测试是否抛出异常,并提供深度的学习和指导意义,其中也会包含一些示例代码以供参考。

Chai 的异常测试断言

Chai 提供了三个可以用于测试是否抛出异常的断言方法,它们分别是:

  • expect(fn).to.throw()
  • expect(fn).to.throw(Error)
  • expect(fn).to.throw('error message')

其中,fn 表示我们要测试的函数或表达式。而这三个方法分别表示:

  • 断言 fn 函数或表达式会抛出任意类型的异常。
  • 断言 fn 函数或表达式会抛出 Error 类型的异常。
  • 断言 fn 函数或表达式会抛出错误信息为 'error message' 的异常。

这三个断言方法都可以在 shouldassert 语法风格下使用,例如:

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

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

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

Chai 测试异常的详细指导意义

除了提供上述的三个断言方法外,Chai 还提供了以下的 API 用于更详细地测试是否抛出异常:

  • expect(fn).to.throw(errMatcher, errMsgMatcher)
  • expect(fn).to.not.throw()

其中,errMatcher 表示一个正则表达式或者一个 Error 子类,表示期望的异常类型,errMsgMatcher 表示一个字符串或一个正则表达式,表示期望的异常信息。

例如:

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

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

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

这些 API 难以概述全部的意义,但它们都可以让我们在测试异常时更加灵活和准确地匹配和检查期望和实际的异常类型和信息,从而更好地提高测试的覆盖率和准确性。

示例代码

以下是一段使用 Chai 测试函数在输入不合法时是否能够正确抛出异常的示例代码:

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

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

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

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

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

可以看到,我们在使用 Chai 时需要先引入 Chai 及各种插件,然后在测试中使用 expect 方法对输入不合法的情况进行断言和测试,从而确保我们的函数能够正确地处理异常情况,提高代码的质量和健壮性。

结论

使用 Chai 来测试是否抛出异常是在前端开发过程中一个非常重要的步骤,特别是当我们编写的代码需要正确处理异常情况时。在测试过程中,我们可以使用上述提供的断言方法和 API,灵活地匹配和检查期望和实际的异常类型和信息,从而为我们的代码业务逻辑提供更全面和准确的测试保障。

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

纠错
反馈