npm 包 nonly 使用教程

在前端开发中,我们经常需要对某些功能模块进行单元测试,而单元测试需要模拟某些环境变量或操作,这时候就需要使用一些 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


猜你喜欢

  • npm 包 sevdesk-voucher-upload-cli 使用教程

    简介 sevdesk-voucher-upload-cli 是一个基于 Node.js 的命令行工具,用于上传文件和凭证信息到 sevDesk 财务软件。它是一个方便实用的工具,可以简化业务流程,提高...

    3 年前
  • npm 包 request-tick 使用教程

    前言 在前端开发中,常常需要发送 Ajax 请求和展示请求结果。而 request-tick 是一个轻量级的请求库,它可以让我们方便地进行请求和展示。 在本文中,我们将深入介绍如何使用 request...

    3 年前
  • npm 包 @theme-tools/plugin-icon-font 使用教程

    在前端开发中,图标字体是非常重要的资源,但是手动维护一套图标库是一项繁琐的工作,因此我们需要一个工具来简化我们的工作流程。这时,就可以使用 @theme-tools/plugin-icon-font ...

    3 年前
  • npm 包 knobz 使用教程

    在前端开发中,有些情况需要在页面上创建可拖动的旋钮控件,来实现某些功能。knobz 是一个基于 jQuery 的旋钮控件库,提供了一系列可自定义的选项,以便于开发者创建符合需求的控件。

    3 年前
  • npm 包 get-gitlab-merge-requests 使用教程

    前言 近年来,随着前端技术的不断发展,研发团队越来越注重代码的效率和质量。在团队协同工作中,有时会遇到多个团队成员对同一代码进行开发和修改的情况。Gitlab 作为常见的代码版本管理平台之一,有一个强...

    3 年前
  • npm 包 react-cli-ch 使用教程

    随着前端框架的发展和应用场景的不断扩大,我们已经步入了前端组件化的时代。而前端组件化的核心在于能够方便地创建和管理组件。这就需要用到一些工具来构建应用程序和组件库。

    3 年前
  • npm 包 model-errors 使用教程

    在前端开发中,对于后端返回的数据,前端需要进行一系列的验证和处理,以保证数据的准确性和安全性。而这种验证和处理工作通常需要大量的代码。为了简化这个过程,我们可以使用 npm 包 model-error...

    3 年前
  • npm 包 search-string-for-google-drive 使用教程

    前言 在前端开发中,我们经常使用谷歌云盘进行资料的存储和分享,但是在使用谷歌云盘进行搜索时,我们往往需要手动输入搜索条件,这样不仅费时费力,还容易出现拼写错误。因此,我们需要一个能够让搜索更加快捷、准...

    3 年前
  • npm 包 ticker-duration-changer 使用教程

    ticker-duration-changer 是一个前端开发中常用的 npm 包,它可以帮助我们更好地控制页面上的定时器及动画效果,提升用户体验。本文将深入介绍该 npm 包的使用教程,并提供示例代...

    3 年前
  • npm 包 xlsx-style-fix 使用教程

    在前端开发中,数据处理是非常常见的任务。而 Excel 表格的使用率也非常高,因此很多时候我们需要在前端中对 Excel 表格进行操作。这时候就需要用到 xlsx-style-fix 这个 npm 包...

    3 年前
  • npm 包 @loll/router 使用教程

    介绍 在前端开发中,路由是不可或缺的一部分,因为它可以帮助我们管理应用程序的各个页面。npm 上有许多优秀的路由库,而 @loll/router 就是其中的一款。 @loll/router 是一个高度...

    3 年前
  • npm 包 better-scroller 使用教程

    引言 现如今,移动设备已经成为了人们生活中最常用的设备之一。无论是浏览新闻、看直播、购物,还是游戏娱乐,都需要我们通过手机进行操作。而手机屏幕相对比较小,又需要通过不同手势进行操作,因此一个流畅的滚动...

    3 年前
  • npm 包 sls-gm 使用教程

    在前端开发中,我们常会使用许多 npm 包来实现各种功能。本篇文章将介绍一个非常实用的 npm 包 sls-gm,它可以让我们在 Serverless 应用中轻松地处理图像,同时还可以进行图片的裁剪、...

    3 年前
  • npm 包 vusion-async-validator 使用教程

    前言 在前端开发中,数据校验是非常重要的一项工作,它能够帮助我们保证数据的正确性,避免用户输入错误数据带来的问题。而 vusion-async-validator 就是一个非常方便的 npm 包,可以...

    3 年前
  • npm 包 @theme-tools/plugin-browser-sync 使用教程

    前言 在前端开发中,我们经常需要在本地调试网页、监听文件变化等工作,这时候使用 BrowserSync 会变得非常方便。@theme-tools/plugin-browser-sync 就是一个基于 ...

    3 年前
  • npm 包 @theme-tools/plugin-js-concat-babel 使用教程

    在前端开发过程中,随着项目变得越来越复杂,浏览器对 JavaScript 文件的请求次数也会越来越多,这导致页面的加载速度变慢。解决这个问题的其中一种方法是把多个 JavaScript 文件合并成一个...

    3 年前
  • npm 包 @theme-tools/sass-import-globbing 使用教程

    介绍 @theme-tools/sass-import-globbing 是一个 npm 包,它可以帮助我们在 SASS 文件中使用 glob 语法来导入多个 SCSS 文件。

    3 年前
  • npm 包 @theme-tools/plugin-webpack 使用教程

    npm 包 @theme-tools/plugin-webpack 使用教程 前言 在前端开发中,Webpack 是应用最广泛的一种构建工具,能够将多种不同类型的文件打包成可在浏览器中运行的静态资源。

    3 年前
  • npm 包 @theme-tools/plugin-shell 使用教程

    介绍 在前端的开发过程中,我们通常会使用多个工具和插件来提高开发效率,简化复杂的流程。而 @theme-tools/plugin-shell npm 包就是一个能够帮助我们快速地创建和配置 shell...

    3 年前
  • npm 包 @theme-tools/plugin-pattern-lab-php 使用教程

    前言 在 Web 开发中,我们经常需要编写 HTML、CSS 和 JavaScript 代码。而在开发过程中,我们也经常需要使用一些 JavaScript 库、CSS 框架等第三方库来提高我们的开发效...

    3 年前

相关推荐

    暂无文章