npm 包 nonly 使用教程

阅读时长 7 分钟读完

在前端开发中,我们经常需要对某些功能模块进行单元测试,而单元测试需要模拟某些环境变量或操作,这时候就需要使用一些 mock 工具库了。今天我们介绍一个非常实用的 npm 包 nonly。

nonly 是什么?

nonly 是一款轻量级 mock、spy 库,可以像 sinon 一样轻松地定义和测试依赖项的行为,并在测试时控制每个依赖项的行为。

安装

在使用 nonly 之前,我们需要先将其安装到项目中,可以使用 npm 命令进行安装:

快速示例

下面我们通过一个快速示例来展示 nonly 的基本使用方法。

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

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

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

该示例中,我们定义了一个 fetchData 函数,其使用了 axios 来请求数据。在测试时,我们使用 nonly 来进行 mock,模拟 axios 的 get 方法,并返回指定的数据。最后再调用 fetchData 并断言返回的数据是否与预期一致。

API

nonly 提供的 API 有以下几种:

mock(target, methodName)

用于 mock 指定对象的 methodName 方法,返回一个 Mock 对象。

示例:

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

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

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

spy(target, methodName)

用于 spy 某个对象的指定方法,并返回一个 Spy 对象。

示例:

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

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

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

Mock

Mock 对象提供了以下方法和属性:

returns(value)

用于设置该 mock 操作的返回值,返回 Mock 对象实例本身。

示例:

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

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

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

throws(error)

用于指定该 mock 操作抛出的错误,返回 Mock 对象实例本身。

示例:

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

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

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

resolves(value)

用于将该 mock 操作返回 Promise 并指定 Promise 解析值,返回 Mock 对象实例本身。

示例:

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

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

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

rejects(error)

用于将该 mock 操作返回 Promise 并指定 Promise 拒绝错误,返回 Mock 对象实例本身。

示例:

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

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

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

called

用于判断该 mock 操作是否被调用,返回 Boolean 类型值。

args

用于获取该 mock 操作被调用时的参数列表,返回 Array 类型值。

Spy

Spy 对象提供了以下方法和属性:

called

用于判断该 spy 操作是否被调用,返回 Boolean 类型值。

args

用于获取该 spy 操作被调用时的参数列表,返回 Array 类型值。

总结

nonly 是一款非常好用的 mock 工具库,其 API 语法简洁优雅,非常容易上手。在前端开发中,使用 nonly 可以帮助我们更快更准确地进行单元测试。希望该文章可以对读者有所启发和帮助。

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

纠错
反馈