npm 包 @spotify/polly-jest-presets 使用教程

阅读时长 7 分钟读完

在前端开发中,我们时常需要对接各种 API,而测试 API 的过程中需要对网络请求进行模拟。@spotify/polly-jest-presets 就是一个帮助我们在 Jest 中模拟网络请求的 npm 包。本文将会介绍如何使用该 npm 包进行网络请求模拟,包括基础 API 的使用和高级功能的配置。

安装

在开始使用该 npm 包前,需要先进行安装。

或者,如果你使用的是 yarn:

基础 API

集成

与其他 Jest 插件一样,我们需要在 Jest 配置文件中设置该 npm 包的配置。

在配置文件中设置该 npm 包的 preset 后,Jest 将会自动为我们创建一个 Polly 实例供使用。

使用

在测试用例中,我们可以使用 polly 对象来创建一个记录网络请求的实例,以及使用 polly.pause()polly.stop() 方法来控制录制流程。

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

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

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

在上述测试用例中,我们使用 polly.record() 方法对网络请求进行截录,polly.pause() 方法暂停了录制流程,以便进行回放模式。

其他 API

  • polly.flush: 将所记录的请求发送到服务器,并将其存储为应该存储到磁盘上的实际响应。 如果要生成错误,则在服务器发送响应之前断言当前模式。
  • polly.configure({ ... }): 配置记录器的其他选项。
  • polly.flushAdapter.flushCache(): 清除记录器的内部缓存。

配置

多路由规则

Polly 的路由规则支持多个配置,即我们可以为每个测试用例独立定义各自的路由规则。

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

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

在上述测试用例中,我们定义了 3 个不同的路由规则:polly1polly2polly3。对于这 3 个路由规则,在同样的 URL 地址上,响应内容将会不同。

动态响应

除了使用预定义的响应之外,我们还可以在模拟中处理不同的响应。

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

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

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

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

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

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

如上述测试用例所示,我们可以在回调函数中处理请求,并根据请求的不同部分返回不同的响应。

总结

在本文中,我们学习了如何使用 @spotify/polly-jest-presets npm 包来模拟网络请求。我们了解该 npm 包的基本使用方法和一些高级选项,如多路由规则和动态响应。当您在编写 Jest 测试用例时需要模拟网络请求时,该 npm 包将能够为您提供很大的帮助。

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