如何测试 GraphQL API

阅读时长 7 分钟读完

GraphQL 是一种新型的 API 查询语言,它允许开发者请求和返回所需的数据,而不需要像传统的 RESTful API 那样收到不必要的数据。然而,由于 GraphQL 的灵活性和动态性,测试 GraphQL API 变得有些棘手。本文将介绍如何测试 GraphQL API,希望能帮助前端开发者更好地测试他们的GraphQL API。

准备工作

在开始测试 GraphQL API 前,我们需要安装并配置一些工具:

  1. Jest - Jest 是由 Facebook 开源的 JavaScript 测试框架,它提供了丰富的 API 和测试运行环境。
  2. graphql-request - 是一个轻量级的 GraphQL 客户端,它可以帮助我们发送 GraphQL 查询并处理响应。
  3. supertest - 一个 HTTP 测试库,它可以帮助我们在 Node.js 应用程序和 Express 应用程序上进行端到端测试。

安装 Jest 和 graphql-request:

安装 supertest:

编写测试用例

了解了 GraphQL 和准备好了所需的工具后,我们可以开始编写测试用例。

测试查询

首先,我们需要为我们的查询编写测试用例。以下是一个查询测试用例的示例,它可以测试一个简单的 GraphQL 查询:

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

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

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

在上面的代码中,我们使用了 graphql-request 发送了一个查询,并检查查询是否返回了正确的结果。expect 函数用于断言测试结果是否和预期一致。

测试变异

接下来,我们需要为我们的变异编写测试用例。以下是一个变异测试用例的示例,它可以测试一个简单的 GraphQL 变异:

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

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

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

在上面的代码中,我们使用了 graphql-request 发送了一个变异,并检查变异是否按照预期添加了一个待办事项。expect 函数用于断言测试结果是否和预期一致。

端到端测试

最后,我们需要进行完整的端到端测试。以下是一个端到端测试的示例,它使用 supertestgraphql-request 从我们的 Node.js 应用程序中查询和变异 GraphQL API:

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

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

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

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

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

在上面的代码中,我们首先使用 supertest 向我们的应用程序发送请求,然后使用 graphql-request 发送 GraphQL 查询或变异。

结论

测试 GraphQL API 可以为我们提供可靠性和稳定性,这对于构建现代 Web 应用是至关重要的。本文介绍了如何使用 Jest、 graphql-requestsupertest 编写测试用例,以便更好地测试我们的 GraphQL API。

真正的测试是为了确保应用程序符合预期行为,与 GraphQL 一样,测试的本质是在解决问题,而不仅仅是检查代码是否运行良好。希望本文可以帮助您更好地测试您的 GraphQL API。

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

纠错
反馈