使用 Mocha 和 Chai 测试 GraphQL 服务器

GraphQL 是一种用于 API 构建的查询语言和运行时。它的优点之一是能够提供一个强大的类型系统,让开发者能够精确描述数据,并使 API 更加可发现并且易于使用。然而,像所有的软件一样,GraphQL 服务器也需要进行测试,以确保代码能够按照预期执行,以及当出现意外行为时能够及时地发现并进行修复。

在本文中,我们将介绍如何使用 Mocha 和 Chai 这两个 JavaScript 测试库来测试 GraphQL 服务器。它们不仅支持测试 GraphQL API,还支持测试任何 JavaScript 代码,包括前端和后端代码。

安装依赖库

在开始之前,首先需要在本地计算机上安装 Mocha 和 Chai。可以使用 npm 在命令行中进行安装:

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

上述命令将 Mocha 和 Chai 安装到本地项目中,同时将它们添加到 package.json 文件的 devDependencies 中。

此外,还需要安装 express-graphql,它是一个 Express 中间件,用于将 GraphQL 服务器添加到 Express 应用程序中。

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

编写测试

在开始编写测试之前,首先需要创建一个用于测试的测试套件。新建一个名为 graphql.test.js 的文件,并添加以下代码:

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

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

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

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

在上述代码中,我们首先引入了所需的库和模块,它们包括 Chai、SuperTest、Express 和 express-graphql。接着,我们创建一个 Express 应用程序,并使用 express-graphql 将 GraphQL API 添加到应用程序中。最后,我们定义了一个名为 GraphQL API 的测试套件。

接下来,我们可以开始编写测试用例了。下面是一个可以测试 GraphQL 查询的测试用例:

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

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

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

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

上述代码中,我们首先定义了一个名为 should return the correct book by ID 的测试用例,它测试了一个查询,用于查找 ID 为 1 的图书。查询中使用了 GraphQL 的查询语句,并通过 request 函数发送给服务器。

在测试套件运行时,Mocha 将调用该测试用例的 done 回调函数。在回调函数中,可以检查响应对象的状态码和正文是否符合预期。在本例中,我们使用 Chai 断言库检查了响应的状态码、图书名称和作者。

除了查询外,还可以编写其他测试用例来测试 GraphQL API 的其他特性,例如变异、区分查询和变异、错误处理等。

运行测试

在编写完测试用例后,可以使用以下命令来运行测试:

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

上述命令将在终端中运行所有测试用例,并显示所有测试的结果。这些测试将与应用程序的模拟环境一起运行,以确保 API 的正确性和可靠性。

结论

本文介绍了如何使用 Mocha 和 Chai 这两个 JavaScript 测试库来测试 GraphQL 服务器。通过编写测试用例和使用断言库,可以测试 GraphQL API 的各种特性,并在代码发生意外行为时能够及时发现并进行修复。因此,在开发 GraphQL 应用程序时,测试是不可或缺的一部分,也是确保代码质量和稳定性的重要手段。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67055e57d91dce0dc8531402