npm 包 @offirgolan/nise 使用教程

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

简介

@offirgolan/nise 是一个基于 XMLHttpRequest 的模拟 HTTP 响应生成器,支持对 Ajax 请求进行拦截,并且返回我们自己设定的假数据。它可以很好地用于前端开发的单元测试、端到端测试以及无服务器的本地测试环境。

安装

在项目根目录下执行以下命令:

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

使用

基本使用

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

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

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

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

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

运行上面的代码,控制台输出:

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

这里我们使用 nise.fakeServer.create() 创建了一个假服务器对象,使用 server.respondWith() 定义了对于 URL 为 /api/users 的 GET 请求,假服务器会返回状态码为 200、响应头为 Content-Type: application/json 的 JSON 数据。最后我们依次发送请求和响应请求,获取响应结果。

请求匹配

上面的示例中,我们简单粗暴地让假服务器响应任何一个 URL 为 /api/users 的 GET 请求,这在实际开发中显然不太合理。我们可能会根据请求的一些参数或者头信息做出不同的响应或者不响应。我们可以使用 server.respondWith() 的第一个参数进行匹配。

在最简单的情况下,第一个参数可以是字符串类型的 URL,例如:

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

这样,只有 URL 路径为 /api/users 并且请求方式为 GET,假服务器才会返回状态码为 200、响应内容为 Success! 的响应。

我们还可以传入正则表达式,例如:

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

这里,首先使用正则表达式 \/api\/users\/(\d+) 匹配出了 /api/users/ 开头,后跟一个数字 ID 的 URL。然后,不论 ID 是多少,假服务器都会返回状态码为 200、响应内容为 Success! 的响应。

另外,我们也可以使用一个回调函数作为第一个参数,这个回调函数接收两个参数,分别为完整请求 URL 和请求对象。例如:

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

这里我们判断了请求方式为 POST 且 URL 以 /api/users 开始的请求,假服务器会返回一个状态码为 200、响应内容为 Success! 的响应。

请求拦截

有了 respondWith(),我们可以很方便地定义对于特定请求的响应,但在实际开发中,我们经常需要对于请求进行拦截,例如检验请求参数或者阻断特定的请求。这时,我们需要使用 server.use()

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

这里,我们让假服务器拦截所有的 /api/users 的 GET 请求,并返回空响应。如果请求的不是 GET 请求或者不以 /api/users 开始,我们则抛出一个错误。

延迟与超时

在实际开发,我们经常会需要测试在请求响应过程中的状态、样式或者交互,但是由于真实的网络环境或者服务器性能的问题,这些测试很难进行。@offirgolan/nise 给我们提供了一些便捷的 API,例如:

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

这里,我们使用 setTimeout 延迟了 3 秒钟再响应请求,这样我们就可以模拟请求响应时间比较长的场景了。如果你希望让请求超时,可以在请求对象上设置 timeout 属性即可:

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

这里,我们设置了请求的最长等待时间为 1 秒钟,在请求没有完成的情况下,xhr 将会触发超时回调。

总结

@offirgolan/nise 使我们可以很便捷地模拟服务器响应,在前端开发的测试和模拟环境中扮演着重要的角色。在文章中,我们介绍了这个库的基本用法,涉及了请求的匹配、拦截、延迟和超时等方面的基本操作。对于使用此库的开发者来说,这篇文章提供了一些详细的指导和示例。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedb170b5cbfe1ea0611103


猜你喜欢

  • npm 包 light-ts-loader 使用教程

    如果你是一名前端开发者,那么你一定知道 TypeScript 在现代的前端开发中扮演了很重要的角色。而使用 TypeScript 进行开发的话,建议使用 webpack 进行打包。

    4 年前
  • npm 包 jss-plugin-vendor-prefixer 使用教程

    在前端开发过程中,我们经常需要考虑浏览器的兼容性,特别是对于 CSS 样式的兼容性处理。而 jss-plugin-vendor-prefixer 是一款可以帮助我们在 CSS 样式中自动添加浏览器厂商...

    4 年前
  • npm 包 @asset-pipe/css-reader 使用教程

    前言 在前端开发中,CSS 是不可或缺的一部分,而我们在项目中往往需要频繁的操作 CSS,如读取、分析、修改等等。因此,如果有一款能够实现这些操作的工具,将会大大提升开发效率。

    4 年前
  • npm 包 @asset-pipe/js-reader 使用教程

    在前端开发中,我们经常需要读取并处理 JavaScript 文件。而此时,@asset-pipe/js-reader 的功能就变得非常有用了。该 npm 包可以让我们轻松地读取 JavaScript ...

    4 年前
  • npm 包 @asset-pipe/sink-fs 使用教程

    简介 @asset-pipe/sink-fs 是一个在 Node.js 中使用的 npm 包,用于将输入流的内容保存到文件系统中的指定位置。如果你需要将程序输出保存到文件中,如日志文件或者静态资源文件...

    4 年前
  • npm 包 @asset-pipe/sink-mem 使用教程

    前言 在前端开发中,流水线(pipe)的概念是非常重要的,它能够将代码构建、压缩、合并等工作进行整合,提高开发效率和代码质量。而其中的一个重要部分就是数据“汇流处”——sink。

    4 年前
  • npm 包 @asset-pipe/server 使用教程

    在现代的前端开发中,模块化已经成为主流,很多项目都采用了模块化的开发方式。而在模块化的开发中,前端经常需要使用一些模块化的资源,如 CSS、 JS 等。而这些资源的管理,包括资源的打包、压缩、版本管理...

    4 年前
  • npm 包 @4c/build 使用教程

    简介 npm 是前端开发不可或缺的工具之一。@4c/build 是一款专门为前端开发量身定制的 npm 包,它提供了一套高效,易用,可定制的前端项目构建工具。使用 @4c/build 可以大大简化前端...

    4 年前
  • npm 包 @4c/init 使用教程

    在前端领域中,我们经常需要创建新的项目或者初始化现有项目的依赖。npm 是一个非常好用的依赖管理工具,在 npm 中可以找到很多有用的包,其中 @4c/init 是一个非常实用的包,可以帮助我们快速初...

    4 年前
  • npm 包 @4c/intl 使用教程

    在前端开发过程中,多语言支持是一个必不可少的功能。在市场上有许多提供多语言支持的工具和库,其中 @4c/intl 是一款非常优秀的 NPM 包。本文将介绍如何正确地使用 @4c/intl 进行多语言支...

    4 年前
  • npm 包 svg2c 使用教程

    前言 SVG是一种基于XML语法的矢量图形,在Web前端开发中被广泛应用。而npm是JavaScript中最经典的包管理器之一,被众多开发者使用。本文将介绍如何使用npm包svg2c将SVG矢量图像转...

    4 年前
  • npm 包 @manypkg/find-root 使用教程

    前言 在前端开发项目中,我们使用 npm 进行包管理是非常常见的。但是,有时候我们需要找到项目的根目录,这对于一些工具库的开发和测试非常有用。在这种情况下,npm 包 @manypkg/find-ro...

    4 年前
  • npm 包 @manypkg/get-packages 使用教程

    介绍 npm 是 JavaScript 的包管理器,被广泛应用于前端、后端、桌面应用程序等领域。当使用多个 npm 包时,我们需要知道这些包之间的依赖关系和版本约束,以便正确引入和管理这些包。

    4 年前
  • 使用 npm 包 ts-doctor 进行 TypeScript 代码修复:教程

    在前端开发中,TypeScript 是一种比较流行的静态类型语言。但是,开发者也可能会遇到一些令人困惑的 TypeScript 错误,这些错误可能出现在编译期间,也可能出现在开发期间。

    4 年前
  • npm 包 @4c/cli 使用教程

    介绍 @4c/cli 是一个基于 Node.js 平台的脚手架工具,它基于 Vue.js 和 Element 两个优秀的前端开源项目进行封装,旨在提供更快捷舒适的前端项目创建和脚手架管理体验。

    4 年前
  • npm 包 signedsource 使用教程

    前言 在前端开发过程中,代码质量非常重要。为确保代码的完整性和安全性,许多公司使用代码签名来验证代码的来源和完整性。其中一个流行的签名方案是 Facebook 开源的 signedsource,本篇文...

    4 年前
  • npm 包 @jsenv/cancellation 使用教程

    在 Web 开发中,我们经常需要处理异步任务。在某些情况下,我们可能需要取消正在执行的异步任务。例如,当用户在搜索框中输入文字时,我们需要取消之前的搜索请求并发起一个新的搜索请求。

    4 年前
  • npm 包 @jsenv/import-map 的使用教程

    概述 在现代 web 应用程序中,JavaScript 依赖管理是一个关键的问题。为了解决这个问题,使用模块化编程已经成为了一种标准,而 ES Modules 是其中最为流行的模块化形式。

    4 年前
  • npm 包 @jsenv/logger 使用教程

    在前端开发过程中,我们经常需要记录一些调试信息或日志,便于排查问题或分析运行状况。而 npm 包 @jsenv/logger 提供了一种简单、灵活的日志记录方式,本文就来介绍如何使用它。

    4 年前
  • npm 包 @jsenv/node-module-import-map 使用教程

    随着前端发展的不断深入,前端工程化已成为现代前端开发的必须要掌握的技能之一。而随着前端应用日益庞大和复杂,模块化开发也变得越来越重要。npm 是一个非常强大、流行的包管理工具。

    4 年前

相关推荐

    暂无文章