npm 包 proxyquire-universal 使用教程

简介

proxyquire-universal 是一个用于 Node.js 和浏览器端的测试辅助工具,可以帮助开发者在单元测试中轻松地模拟依赖项。它能够在运行时动态替换 require 语句或 ES6 的 import 语句,使得我们可以使用自定义的 mock 模块来代替真实的依赖项,从而避免了对真实依赖项的依赖,同时也使得测试代码更加可靠和可维护。

安装

可以通过 npm 来安装 proxyquire-universal:

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

使用

基本用法

下面是一个示例代码:

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

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

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

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

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

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

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

在上面的示例代码中,我们使用了 proxyquire-universal 来代替真实的 moment 模块。proxyquire 可以接受两个参数:第一个参数是要加载的模块,第二个参数是一个对象,用于指定要替换的依赖项和它们对应的 mock 模块。

使用 withGlobal()

如果你希望全局地替换某个依赖项,可以使用 withGlobal() 方法。下面是一个示例代码:

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

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

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

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

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

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

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

在上面的示例代码中,我们使用 withGlobal() 方法来创建一个全局的代理,在测试代码中直接给 global 对象添加或修改全局变量 moment 的值,就可以实现全局替换 moment 模块的效果。

使用 with() 和 noCallThru()

如果你使用了 with() 方法来指定要替换的模块,同时还希望在 mock 模块中调用原始模块的方法,可以使用 noCallThru() 方法。下面是一个示例代码:

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

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

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

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

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

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

猜你喜欢

  • npm 包 fs-tools 使用教程

    简介 fs-tools 是一个 Node.js 的文件系统工具包,它提供了对文件和目录的常用操作方法。使用 fs-tools 可以轻松地完成如下操作: 复制、移动和删除文件或目录 创建新目录 读取和...

    6 年前
  • npm 包 spate 使用教程

    Spate 是一个基于 JavaScript 的 npm 包,它提供了一种方便的方式来处理异步任务和数据流。该工具可用于前端和后端应用程序,本文将介绍如何在前端项目中使用 Spate。

    6 年前
  • npm 包 groc 使用教程

    介绍 groc 是一个用于生成文档的工具,可以帮助前端开发者快速生成项目文档。它支持多种编程语言,包括 JavaScript、CoffeeScript、Ruby、Python 等等,是一个功能强大的工...

    6 年前
  • npm 包 mocha-subject 使用教程

    简介 Mocha 是一个流行的 JavaScript 测试框架,它支持多种测试样式,包括 BDD 和 TDD。但是在编写 Mocha 测试时,有时我们需要在多个测试用例中重复一些通用代码,这就会导致代...

    6 年前
  • npm包LinkedList使用教程

    什么是LinkedList? LinkedList(链表)是一种常见的数据结构,它由节点(Node)组成,并使用指针将这些节点链接在一起。每个节点都包含一个值和指向下一个节点的指针。

    6 年前
  • npm包timer-shim使用教程

    在前端开发中,我们经常需要使用定时器来执行一些重复性的任务或者延迟执行某些操作。而在不同的浏览器或者环境下,定时器的实现方式也有所不同。为了解决这个问题,我们可以使用npm包timer-shim,它提...

    6 年前
  • npm 包 karma 使用教程

    什么是 karma? Karma 是一个测试运行器,它可以自动执行单元测试和集成测试,并提供测试覆盖率报告。它可以与多种测试框架(如 Jasmine、Mocha 和 QUnit)一起使用。

    6 年前
  • npm 包 full-icu 使用教程

    在进行国际化开发时,我们常常会使用到 ICU (International Components for Unicode) 库。然而,Node.js 默认情况下是不支持全部的 ICU 功能的,这就需要...

    6 年前
  • npm 包 pretty-bytes 使用教程

    在前端开发过程中,我们常常需要处理文件大小的显示问题。而在 JavaScript 中,有一个非常方便的 npm 包,叫做 pretty-bytes,可以将字节数转换为更易读的格式。

    6 年前
  • npm 包 duplexer 使用教程

    在 Node.js 的开发中,有时候需要对子进程进行一些管理和控制。而 duplex 双工流是一种常见的实现方式,它可以将一个可写流转换为可读流,从而让我们能够更加方便地进行子进程的管道操作。

    6 年前
  • npm 包 delay 使用教程

    简介 delay 是一个能够延迟程序执行的 npm 包。它可以用于模拟程序等待、处理异步操作和调试,也可以增加程序的流畅性和稳定性。 安装 你可以通过 npm 命令行安装 delay: --- ---...

    6 年前
  • npm 包 function-bind 使用教程

    在前端编程中,经常需要进行函数绑定(bind),使用 function-bind 这个 npm 包可以轻松地解决这个问题。 安装 function-bind 首先,在命令行中运行以下命令来安装 fun...

    6 年前
  • npm 包 es-to-primitive 使用教程

    在 JavaScript 中,有时候需要将一个值转换为原始类型,比如将一个对象转换成字符串或者数字。es-to-primitive 是一个可以帮助我们实现这个功能的 npm 包。

    6 年前
  • npm 包 es-abstract 使用教程

    什么是 es-abstract? es-abstract 是一个用于 ECMAScript 规范的抽象操作的 npm 包,其中包含了许多通用的工具函数和算法,以便其他 JavaScript 工具和库可...

    6 年前
  • npm 包 define-properties 使用教程

    在前端开发中,我们经常需要定义对象的属性。然而,在 JavaScript 中,属性的定义和访问可能会出现一些不可预期的问题,如不可枚举、不可配置等。为了解决这些问题,我们可以使用 npm 包 defi...

    6 年前
  • npm 包 nodesecurity-npm-utils 使用教程

    简介 在开发 Web 应用程序时,使用第三方 npm 包是非常普遍的。然而,这些包有可能存在安全漏洞,可能会对应用程序的安全性造成威胁。为了避免这样的情况,我们可以使用 nodesecurity-np...

    6 年前
  • npm 包 cvss 使用教程

    CVSS(Common Vulnerability Scoring System)是一种广泛使用的开放式框架,用于对计算机系统中的漏洞进行评估和打分。在前端开发中,我们可以通过使用 npm 包 cvs...

    6 年前
  • npm 包 nsp 使用教程

    简介 nsp 是一个开源的命令行工具,用于检查 Node.js 项目中的安全漏洞。它可以扫描项目中已安装的 npm 模块以及项目本身的依赖关系,并报告任何已知的漏洞。

    6 年前
  • npm 包 covert 使用教程

    简介 covert 是一个轻量级的 JavaScript 库,主要用于将 JSON 对象转换为指定格式的 HTML 表格。它可以通过 NPM 安装并在前端项目中使用。

    6 年前
  • npm 包 "in-publish" 使用教程

    简介 在开发和发布 npm 包时,我们经常需要执行一些特定的操作,比如在发布前对代码进行编译、测试、文档生成等。这些操作通常需要手动完成,但是如果我们能够自动化执行这些任务,就可以大大提高我们的工作效...

    6 年前

相关推荐

    暂无文章