Chai.js expect 语法中的 `to.throw` 详解

Chai.js expect 语法中的 to.throw 详解

在前端开发中,测试是非常重要的,而 Chai.js 是一种广泛使用的测试框架之一。Chai.js 的 expect 语法是其中最常用的语法之一,其中 to.throw 语法允许我们检查代码是否抛出所预期的异常。本文将介绍这个语法如何使用,以及如何更好地利用它来测试前端代码。

基础

在开始学习 to.throw 之前,我们首先需要了解 try...catch 机制。try 语句允许我们在执行代码前设置一个异常处理程序,当异常被抛出后,控制流将转移到 catch 语句中。下面是一个简单的例子:

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

在上面的代码中,try 语句中的代码可能会抛出一个异常,如果出现异常,则会跳过 try 语句中的代码并转到 catch 语句中,其中可以处理异常。

现在让我们来看一下 Chai.js 中的 to.throw 语法。该语法基本上是一个检查某些代码是否抛出所预期异常的断言。它的基本语法为:

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

其中 fn 是需要测试的代码块,[error] 是可选的错误类型或错误消息。如果代码块没有抛出异常,则断言失败。

如果 error 参数是一个字符串,则它将与抛出的异常对象的 message 属性进行比较。如果 error 是一个函数,则它将与抛出的异常对象进行比较,可以检查异常的类型等属性。

举个例子:

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

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

在上面的例子中,我们创建了一个函数 throwError(),它会抛出一个 Error 异常,并包含错误消息 "Something went wrong!"。然后使用 expect 语法来检查这个函数是否抛出了我们期望的异常。

如果我们不想检查错误消息,只想检查抛出的异常类型,可以使用如下的语法:

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

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

在这个例子中,我们抛出了一个具有 TypeError 类型的异常,然后使用 expect 语法来检查它是否抛出了期望的异常类型。

使用 to.throw 检查异步代码

to.throw 对于检查异步代码中的异常也是非常有用的。考虑以下示例:

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

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

在上面的代码中,我们使用 await 关键字来等待异步代码块执行,然后使用 expect 语法检查是否抛出了异常。注意,我们没有指定任何特定的错误类型或错误消息,这意味着我们只关心代码块是否抛出了任何异常。

结论

在本文中,我们介绍了 Chai.js expect 语法中的 to.throw 语法,该语法允许我们检查代码是否抛出了所预期的异常。我们使用示例代码说明了该语法的基本用法,包括检查错误类型和错误消息,并讨论了如何使用该语法检查异步代码中的异常。在编写测试代码时,使用这些知识可以帮助我们更好地测试前端代码。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6710813f5f551281026ba34a