npm 包 @pact-foundation/pact-standalone-linux-x64 使用教程

阅读时长 9 分钟读完

简介

pact 是一个用于前后端契约测试(consumer-driven contract testing)的工具。在构建 Web 应用时,前后端通常会通过 API 交互数据。在这种情况下,前端和后端需要达成共识,即 API 的数据格式、请求参数和返回结果等方面的约定。而 pact 则提供了一种基于契约的 API 测试方法,帮助前端和后端开发者达成 API 交互方面的共识,从而保证系统的可靠性和稳定性。

@pact-foundation/pact-standalone-linux-x64 是 pact 的一个 npm 包,它是 pact 的一个完全独立的二进制文件,可以在一个单独的进程中运行 Pact Mock Service 和 Pact Broker。

本篇文章将详细介绍如何使用 @pact-foundation/pact-standalone-linux-x64 这个 npm 包。

安装

安装成功后,通过命令 node_modules/.bin/pact-standalone help 可以查看 pact-standalone 的使用帮助。pact-standalone 的使用可以分为三个阶段:准备 Mock Server、运行测试和推送 Contracts 到 Pact Broker。

准备 Mock Server

Mock Server 是一个虚拟的服务,前端开发者可以通过在测试中访问 Mock Server 来模拟后端 API 的返回结果。

首先需要在测试代码中创建一个 pact 实例,然后在 beforeEach 阶段启动 Mock Server:

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

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

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

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

provider.setup() 中,会启动一个 Mock Server。注意,consumerprovider 的名字在测试中需要一致。在 provider.verify() 中,会检查测试中发出的请求是否与 Mock Server 的契约一致。

运行测试

在测试中,需要发出 API 请求,并验证 Mock Server 的返回结果是否符合预期。在测试代码中,可以使用 pact.MockService.create() 来创建一个 Mock Service:

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

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

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

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

mockProvider.given() 中,指定了 Mock Server 的初始状态。在 mockProvider.uponReceiving() 中,指定了 HTTP 请求的信息。在 mockProvider.willRespondWith() 中,指定了 Mock Server 对这个请求的响应。在测试代码中发出 HTTP 请求,并验证返回结果是否符合预期。

推送 Contracts 到 Pact Broker

Contracts 是 Pact 契约的文档形式,保存在 Pact 中。Pact Broker 是一个可视化的工具,它可以将 Contracts 的版本控制和发布变得更加简单明了。

在 CI/CD 环境中,可以使用 pact.publish() 将 Contracts 推送到 Pact Broker:

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

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

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

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

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

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

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

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

provider.addInteraction() 中,将 Mock Server 和 Pact 进行交互。在 provider.finalize() 中,将 Mock Server 关闭。在 pact.publish() 中,将保存的 Pact 文件推送到 Pact Broker。

总结

本篇文章介绍了如何使用 @pact-foundation/pact-standalone-linux-x64 这个 npm 包来进行 API 测试。在测试中,首先需要准备 Mock Server,然后运行测试,最后将 Contracts 推送到 Pact Broker,以便管理和版本控制。Pact 是一种基于契约的 API 测试方法,可以帮助前后端开发者达成 API 交互方面的共识,从而保证系统的可靠性和稳定性。

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

纠错
反馈