npm 包 fetch-mock 使用教程

阅读时长 4 分钟读完

fetch-mock 是一个 Node.js 和浏览器中可用的 mock HTTP 请求库,可以用于测试和开发。它支持 ES6 的 fetch API,使得使用它来模拟服务端响应变得非常方便。

安装

在 Node.js 中,使用以下命令安装:

在浏览器中,可以通过 CDN 来使用:

基本使用

模拟 GET 请求

下面是一个简单的示例,展示了如何使用 fetch-mock 来模拟一个 GET 请求:

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

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

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

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

这个示例中,我们调用 fetchMock.get 方法来模拟一个 GET 请求,并返回一个固定的响应对象 { data: 'mocked data' }。然后我们使用 fetch 方法来发起这个请求,并打印出响应数据。

最后我们调用 fetchMock.restore 方法来取消模拟请求。这很重要,因为我们在测试或开发的时候可能需要多次模拟请求,如果不清除它们,就会影响后续测试的结果。

模拟 POST 请求

下面是一个示例,展示了如何使用 fetch-mock 来模拟一个 POST 请求:

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

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

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

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

在这个示例中,我们调用 fetchMock.post 方法来模拟一个 POST 请求,并返回一个根据请求数据生成的响应对象。然后我们使用 fetch 方法来发起这个请求,并打印出响应数据。

模拟错误响应

下面是一个示例,展示了如何使用 fetch-mock 来模拟一个错误响应:

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

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

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

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

在这个示例中,我们调用 fetchMock.get 方法来模拟一个 GET 请求,并返回一个抛出异常的响应。然后我们使用 fetch 方法来发起这个请求,并捕获异常并打印出错误信息。

高级使用

模拟延迟响应

有时候我们需要模拟一个网络慢的场景,这时可以使用 Response.init 中的 delay 来模拟延迟响应。下面是一个示例:

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

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

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

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