如何使用 Apollo Server 进行 GraphQL API 测试

阅读时长 6 分钟读完

GraphQL 是一种用于 API 的查询语言,它可以让客户端精确地获取所需的数据,从而提高应用程序的性能和可靠性。Apollo Server 是一个用于构建 GraphQL 服务器的库,它提供了一些强大的工具,帮助我们快速构建和测试 GraphQL API。

在本文中,我们将介绍如何使用 Apollo Server 进行 GraphQL API 测试,包括如何创建和运行服务器、如何编写测试用例以及如何使用 Mock 数据进行测试。

创建 Apollo Server

首先,我们需要安装 Apollo Server:

然后,我们可以创建一个简单的 Apollo Server,如下所示:

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

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

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

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

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

在上面的代码中,我们定义了一个简单的查询类型 Query,其中包括一个 hello 字段。我们还定义了一个解析器 resolvers,它告诉服务器如何解析查询。最后,我们创建了一个 Apollo Server 实例,并将其监听在本地的端口上。

现在,我们可以使用 GraphQL Playground 来测试我们的 API。在浏览器中打开 http://localhost:4000,就可以看到 GraphQL Playground 的界面。在左侧的查询编辑器中,输入以下查询:

然后点击运行按钮,就可以在右侧的结果面板中看到我们的 API 返回了一个字符串“Hello, world!”。

编写测试用例

现在,我们已经成功地创建了一个 GraphQL API,并用 GraphQL Playground 进行了测试。但是,我们需要编写一些自动化测试来确保我们的 API 在不同的场景下都能正常工作。

我们可以使用 Jest 和 supertest 来编写测试用例。首先,我们需要安装这两个库:

然后,我们可以创建一个测试文件 server.test.js,如下所示:

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

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

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

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

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

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

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

在上面的代码中,我们首先定义了一个与之前相同的 GraphQL Schema 和解析器。然后,我们创建了一个 Apollo Server 实例,并使用 createTestClient 函数创建了一个测试客户端。最后,我们编写了一个测试用例,使用测试客户端向服务器发送一个查询,并断言服务器是否正确地返回了“Hello, world!”。

现在,我们可以在终端中运行 jest 命令来运行测试用例。如果一切正常,我们应该会看到测试通过的消息。

使用 Mock 数据进行测试

有时候,我们需要对服务器进行测试,但是数据还没有准备好。这时,我们可以使用 Mock 数据来模拟服务器的行为。

我们可以使用 Apollo Server 的 mocks 选项来生成 Mock 数据。首先,我们需要安装 graphql-tools

然后,我们可以修改之前的测试文件 server.test.js,如下所示:

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

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

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

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

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

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

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

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

在上面的代码中,我们使用 makeExecutableSchema 函数和之前相同的类型定义创建了一个 GraphQL Schema。然后,我们使用 addMockFunctionsToSchema 函数将 Mock 函数添加到 Schema 中。最后,我们创建了一个 Apollo Server 实例,并使用测试客户端向服务器发送一个查询。

现在,我们可以在测试用例中断言服务器返回的值是否为字符串类型,而不是具体的值。这样,我们就可以使用 Mock 数据来测试服务器的行为,而不必担心数据是否准备好。

总结

在本文中,我们介绍了如何使用 Apollo Server 进行 GraphQL API 测试。我们首先创建了一个简单的 Apollo Server,并使用 GraphQL Playground 进行了测试。然后,我们使用 Jest 和 supertest 编写了测试用例,并使用 Mock 数据来模拟服务器的行为。这些工具可以帮助我们快速构建和测试 GraphQL API,并确保其在不同的场景下都能正常工作。

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

纠错
反馈