如何使用 Jest 测试一个 GraphQL 应用程序?

阅读时长 5 分钟读完

GraphQL 是一种查询语言,它可以让前端应用程序更有效地与后端服务进行通信,从而提高整个应用程序的性能。但是,由于 GraphQL 的复杂性和灵活性,它的测试也变得非常困难。在这篇文章中,我们将探讨如何使用 Jest 测试一个 GraphQL 应用程序,以及如何通过测试来改进我们的应用程序。

准备工作

在开始测试之前,我们需要准备一些工作。

首先,我们需要确保我们的应用程序已经被写入 GraphQL,并且我们可以查询数据库并返回数据。我们还需要安装一些 npm 包,包括graphql, apollo-server, apollo-server-testing, 和 jest

安装这些包后,我们需要创建一个 GraphQL schema,这可以通过使用makeExecutableSchema方法来实现,该方法来自graphql-tools包。在这个 schema 中,我们可以定义我们的查询,类型和解析器。我们需要将这个 schema 传递给 Apollo 服务器,以便将其用于处理我们的查询。

现在,我们已经准备好开始测试了。

使用 Jest 测试 GraphQL 应用程序

使用 Jest 测试 GraphQL 应用程序主要涉及以下三个步骤:

  1. 定义查询
  2. 创建测试数据
  3. 执行查询

定义查询

在我们开始编写测试之前,我们需要知道我们要测试的是什么。我们需要定义一个查询,然后对该查询进行测试。

例如,下面是一个查询,它查询所有用户的姓名:

创建测试数据

在执行查询之前,我们需要为我们的测试创建一些数据。我们可以使用ApolloServerTestClient来模拟我们的应用程序,然后使用 Jest 来测试它。我们还需要模拟一些数据库,以便我们可以测试我们的查询。

例如,下面是一个测试,它创建了一个模拟用户对象并在数据库中查询他们的名称:

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

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

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

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

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

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

这个测试使用ApolloServerTestClient来创建一个测试客户端,然后使用ApolloServer来启动我们的应用程序。然后,我们将执行查询并校验查询结果的正确性。

执行查询

现在我们已经定义了查询和创建了测试数据,我们需要执行查询并校验返回的结果。我们可以使用client.query方法来执行查询,并使用 Jest 中的expect方法来断言查询结果的正确性。

例如,下面是一个测试,它使用 Jest 断言查询结果正确性:

在这个测试中,我们使用 Jest 断言data.users.name返回了一个字符串,这个字符串满足正则表达式/^[A-Za-z]{1,}$/,可以用来校验用户名称的格式。

总结

在这篇文章中,我们探讨了如何使用 Jest 测试一个 GraphQL 应用程序。我们可以使用ApolloServerTestClient来模拟应用程序,并使用 Jest 中的expect方法来断言查询结果的正确性。通过编写测试,我们可以保证我们的应用程序可以正常工作,并且我们可以不断改进和优化我们的应用程序。

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

纠错
反馈