npm 包 mocha-as-promised 使用教程

阅读时长 5 分钟读完

背景

在前端开发中,测试是不可或缺的一部分。而 mocha 是一个常用的 JavaScript 测试框架,可以用于编写各种类型的测试。但是,有时候我们需要测试异步代码,这时候 mocha 就显得有些力不从心了。

为了解决这个问题,mocha-as-promised 库应运而生。它提供了一些方便的 API,使得测试异步代码变得更加容易和直观。

安装

在使用之前,需要先安装 mocha-as-promised。可以通过 npm 进行安装:

使用

基本用法

使用 mocha-as-promised 的基本思路是将待测试的异步函数包装在一个返回 Promise 的函数中,然后将这个函数传给 it 函数进行测试。下面是一个简单的例子:

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

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

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

在这个例子中,我们测试了一个异步函数,其中执行了一个 setTimeout。我们将这个函数包装在一个返回 Promise 的函数中,并且使用 eventually 函数来测试它的返回值是否等于 3。

API

eventually(promise [, options])

eventually 函数是 mocha-as-promised 提供的最基本的 API。它的作用是等待一个 Promise 完成,并且在完成后进行断言。

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

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

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

如果 Promise 在指定超时时间内没有完成,那么测试会失败。可以通过传入 options 参数来设置超时时间:

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

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

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

delayed(fn)

delayed 函数可以延迟执行一个函数(即在下一次事件循环中执行)。这个函数可以用于在 Promise 完成之后进行一些操作,例如更新组件状态。

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

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

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

rejected(promise [, options])

rejected 函数用于测试 Promise 是否会被拒绝(rejected)。它的作用与 eventually 类似,但是会检查 Promise 是否被拒绝,并且可以使用 options 参数来设置超时时间。

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

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

- ----------------------------------------------------------- --------
----------------------------------------------------------------------------------
纠错
反馈