使用 Jest 测试 GraphQL Server 的入门实践

阅读时长 6 分钟读完

GraphQL 作为一种新兴的 Web API 技术,其方便性、强大性得到了越来越多的前端开发者的认可。然而在前端应用开发中,需要保证与后端交互的接口可靠性,这显然需要非常高质量的测试来支持。本文将介绍在使用 Jest 测试 GraphQL Server 的过程中需要注意的地方,并给出一些示例代码来帮助读者更好地进行实践。

前置知识

在阅读本文前,读者需要对以下技术有一些基础的了解:

  • GraphQL 的基本概念与使用方式
  • GraphQL 的测试基础知识
  • Jest 的使用方式

如果读者对上述技术中的任一部分还不熟悉,建议先学习相关的官方文档或教程,并完成相关的练习。

使用 Jest 进行 GraphQL Server 测试的基本思路

在使用 Jest 进行 GraphQL Server 测试时,我们需要关注以下几个方面:

  1. 创建 GraphQL Server 实例
  2. 编写测试用例
  3. 运行测试用例

本文将分别介绍这三个方面涉及的具体步骤。

创建 GraphQL Server 实例

在进行 GraphQL Server 测试前,我们需要先创建一个 GraphQL Server 实例。目前市面上有很多种实现 GraphQL Server 的方式,例如使用 Node.js + Express.js,使用 Apollo Server 等等。在这里,我们以使用 Node.js + Express.js 为例,给出创建 GraphQL Server 实例的示例代码:

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

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

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

-- -- ------- ------ --
----- --- - ----------
--------
  -----------
  -------------
    ------- -------
    ---------- -----
    --------- ----
  --
--
---------------- -- -- -------------------- ------ ------- -- ---------------------------------
展开代码

编写测试用例

接下来,我们需要根据实际需求编写测试用例。在 GraphQL Server 测试中,我们主要需要关注以下几个方面:

  • Query 测试:测试查询接口(Query)
  • Mutation 测试:测试变更接口(Mutation)
  • Subscription 测试:测试订阅接口(Subscription)

具体来说,我们需要确保以下方面的测试用例都被充分覆盖:

  1. 查询 Query 接口返回数据的正确性
  2. 查询 Query 接口返回数据的顺序是否正确
  3. 变更 Mutation 接口返回数据的正确性
  4. 订阅 Subscription 接口返回数据的正确性

我们在这里以一个简单的示例来说明测试用例的编写方式。该示例中的 GraphQL Schema 定义了两个 Query 接口:getBooks 和 getBookById。其中,getBooks 查询接口返回所有书籍信息,而 getBookById 查询接口根据给定的书籍 ID 返回对应书籍的详细信息。对于这个示例,我们需要编写以下几种测试用例:

  1. 测试 getBooks 接口返回数据的正确性
  2. 测试 getBooks 接口返回数据的顺序是否正确
  3. 测试 getBookById 接口返回数据的正确性

我们以第一种测试用例为例,给出其具体代码实现:

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

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

    --------------------------------
    -----------------------------------------
    -----------------------------------------------------
    ---------------------------------------------
    ---------------------------------------
      ------ ---- ----- --------
      ------- --- ----- -----------
    ---
  ---
---
展开代码

在上述测试用例中,我们使用了第三方库 supertest,它可以帮助我们模拟发送 HTTP 请求,并获取响应结果。在测试用例中,我们首先定义了一个查询字符串,用于调用 getBooks 接口。我们然后通过发送 POST 请求到 /graphql 接口,来调用 GraphQL Server 并获得返回结果。最后,我们使用 Jest 的断言方法 expect 对返回的结果进行校验。

运行测试用例

在编写了测试用例后,我们需要启动 Jest 并运行测试用例。我们可以在项目的根目录下,编写 jest.config.js 配置文件,定义 Jest 的配置,例如:

接着,我们可以在终端窗口中输入以下命令来启动 Jest 并运行测试用例:

如果一切正常,我们应该可以看到类似于以下的输出内容:

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

---- ------- - ------- - -----
------       - ------- - -----
----------   - -----
-----        ----- -- --------- - -
--- --- ---- ------ -------- -----------------------------------
展开代码

结语

本文中,我们介绍了使用 Jest 来测试 GraphQL Server 的入门实践,包括创建 GraphQL Server 实例、编写测试用例、以及运行测试用例。希望读者可以根据本文中的示例代码和思路,更好地进行 GraphQL Server 测试的实践。最后,建议读者在实践过程中,选择适合自己项目需求的 GraphQL 实现,例如 Apollo Server 等。

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

纠错
反馈

纠错反馈