如何使用 Chai-As-Promised 对 Promise 进行测试?

阅读时长 5 分钟读完

前端开发中,我们经常会使用 Promise 来处理异步操作,而测试异步操作是前端开发中不可避免的一部分。在测试 Promise 时,我们可以使用 Chai-As-Promised 这个库来方便地进行测试。

Chai-As-Promised 简介

Chai-As-Promised 是 Chai 的一个插件,它提供了对 Promise 的支持。它可以让我们方便地测试 Promise 是否正确地被 resolved 或 rejected。

安装 Chai-As-Promised

我们可以使用 npm 来安装 Chai-As-Promised:

使用 Chai-As-Promised

在使用 Chai-As-Promised 进行测试之前,我们需要先引入它:

然后,我们就可以使用 Chai-As-Promised 的 API 来测试 Promise 了。

expect(Promise).to.be.fulfilled

这个 API 用来测试 Promise 是否被 resolved。如果 Promise 被 resolved,测试通过;如果 Promise 被 rejected,测试失败。

expect(Promise).to.be.rejected

这个 API 用来测试 Promise 是否被 rejected。如果 Promise 被 rejected,测试通过;如果 Promise 被 resolved,测试失败。

expect(Promise).to.be.fulfilled.with(value)

这个 API 用来测试 Promise 是否被 resolved,并且 resolved 的值与给定的值相等。如果 Promise 被 resolved,并且 resolved 的值与给定的值相等,测试通过;否则,测试失败。

expect(Promise).to.be.rejected.with(error)

这个 API 用来测试 Promise 是否被 rejected,并且 rejected 的错误与给定的错误相等。如果 Promise 被 rejected,并且 rejected 的错误与给定的错误相等,测试通过;否则,测试失败。

示例代码

下面是一个使用 Chai-As-Promised 测试 Promise 的示例代码:

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

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

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

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

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

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

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

总结

使用 Chai-As-Promised 可以方便地测试 Promise 是否正确地被 resolved 或 rejected。我们可以使用 Chai-As-Promised 的 API 来测试 Promise,并且可以给 API 传递参数来测试 Promise 的 resolved 或 rejected 的值是否正确。

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

纠错
反馈