Chai.js 中 assert.rejects 和 assert.doesNotReject 方法的使用

阅读时长 4 分钟读完

在前端开发中,测试是非常重要的环节。测试可以帮助我们发现问题,保证代码质量。Chai.js 是一个常用的 Jest 类库,它提供了很多方便的 API 来进行测试。在本文中,我们将着重介绍 Chai.js 中 assert.rejects 和 assert.doesNotReject 两个 API 的使用。

assert.rejects

assert.rejects 是一个非常常用的 API,它用来测试一个 Promise 是否会被 rejection。我们可以使用 chaiAsPromised 插件来引入 assert.rejects。chaiAsPromised 插件会给所有的应该返回一个 Promise 的断言增加类似 rejects, eventually 及 fulfilled() 的 API。

使用方式如下所示:

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

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

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

上述示例中,我们使用了 async-await 的语法来执行异步代码,throw new Error 会使得我们定义的 Promise 被 rejection。在测试用例中, 我们通过 expect 函数调用 assert.rejects 告诉断言库我们期望一个 rejection。通过 rejectedWith 函数来判断 rejection 的类型是否与我们期望的相同。

如果不是用 async-await,我们也可以使用 Promises,使用方式如下所示:

在上述示例中,我们使用了箭头函数定义了一个 function,用于创建一个 rejected 的 Promise。使用 expect 函数调用了 assert.rejects,之后使用 rejectedWith 函数来判断 rejection 的类型是否与我们预期的相同。

assert.doesNotReject

与 assert.rejects 相反,assert.doesNotReject 用来测试一个 Promise 是否没有被 rejection。使用方式如下所示:

在上述示例中,我们使用了 async-await 的语法来执行异步代码,成功执行的 Promise 不会被 reject。 我们通过 expect 函数调用 assert.doesNotReject 告诉断言库我们期望 Promise 不被 rejection。

如果不是用 async-await,我们也可以使用 Promises,使用方式如下所示:

在上述示例中,我们使用了箭头函数定义了一个 function,用于创建一个成功执行的 Promise。使用 expect 函数调用了 assert.doesNotReject。

总结

在前端开发中,测试是非常重要的环节。Chai.js 提供了很多方便的测试 API,包括 assert.rejects 和 assert.doesNotReject。这两个 API 在测试 Promise 的 rejection 和成功执行面时都非常方便。掌握正确的使用方式可以帮助我们更好地进行测试,提高代码质量。

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

纠错
反馈