GraphQL 是一种用于 API 的查询语言,它允许客户端明确地请求所需的数据,从而减少了不必要的数据传输和提高了应用程序的性能。在开发过程中,测试是必不可少的环节,因为它可以确保我们的应用程序在各种情况下都能正常运行。而 Chai 是一个广泛使用的 JavaScript 断言库,它为测试提供了各种各样的功能和 API,使我们可以方便、高效地进行测试。那么,如何在 Chai 中测试 GraphQL API 呢?本文将详细介绍。
安装所需模块和工具
在开始测试之前,我们需要安装一些必要的模块和工具。它们分别是:
- Mocha:一个流行的 JavaScript 测试框架
- Chai:一个 JavaScript 断言库
- Chai-http:在 Chai 中发起 HTTP 请求的插件
在安装这些工具之前,我们需要确认一下项目中是否已经有 package.json 文件。如果没有,需要使用以下命令来创建它:
npm init -y
然后,可以使用以下命令来安装所需模块和工具:
npm install --save-dev mocha chai chai-http
接下来,我们可以在项目根目录创建一个名为 test 的文件夹,并在其中创建一个名为 graphql.test.js 的文件,这将是我们编写测试用例的地方。
编写测试用例
现在,让我们开始编写测试用例。我们将演示如何测试一个 GraphQL 查询和一个 GraphQL 变异。假设我们已经有一个正在运行的 GraphQL 服务器,而且它的 API 端点在 /graphql 上。
测试 GraphQL 查询
首先,我们需要定义一个测试套件(test suite)。我们可以在测试文件的开头使用 describe 方法来定义套件的标题和包含的测试用例。在这个套件中,我们将测试获取所有用户的 GraphQL 查询。
-- -------------------- ---- -------
----- - ------ - - ----------------
----- ---- - ----------------
----- -------- - ---------------------
-------------------
----------------- ----- ------ -- -- -
---------- ------ --- ------- ------ -- -
-------------------------------------
-----------------
-------
------ -
----- -
----- -
--
----
-----
-
-
--
--
---------- ---- -- -
--------------------------------
------------------------------------
-- --- ---- --- ------ ----
-------
---
---
---在这个测试用例中,我们首先使用 require 方法导入 chai 和 chai-http 模块,并将其存储在变量中。然后,我们使用 describe 方法定义了一个名为 GraphQL Query Test 的测试套件。
在测试套件中,我们定义了一个测试用例(test case),它使用 it 方法来表示。这个测试用例的目的是测试获取所有用户的 GraphQL 查询是否返回了正确的数据。
我们使用 chai.request 方法发起一个 POST 请求。在请求正文中,我们将包含我们的 GraphQL 查询语句。在响应中,我们在 end 方法的回调函数中添加了一些断言,以确保响应的状态是 200 OK 状态,服务器返回的 HTTP 正文是一个对象,并且数据符合我们的预期。done() 方法表示测试已经完成。
现在,我们已经可以使用上面的代码来测试我们的 GraphQL 查询了。
测试 GraphQL 变异
接下来,让我们看看如何测试 GraphQL 变异。假设我们已经有一个可以添加用户到数据库的 GraphQL 变异,我们将测试它是否可以正常工作。
-- -------------------- ---- -------
----------------- -------- ------ -- -- -
---------- --- - --- ------ ------ -- -
-------------------------------------
-----------------
-------
------ -
-------- -
------------- ----- ----- ------ ------------------- -
--
----
-----
-
-
--
--
---------- ---- -- -
--------------------------------
------------------------------------
-- --- ---- --- ------ ----
-------
---
---
---在这个测试用例中,我们定义了一个新的测试套件,名为 GraphQL Mutation Test。这个测试用例的目的是测试我们的 GraphQL 变异是否能够添加一个新用户。
我们使用同样的方法发送一个 POST 请求,其中将包含我们的 GraphQL 变异语句。在响应中,我们同样添加了断言来确保响应的状态是 200 OK 状态,服务器返回的 HTTP 正文是一个对象,并且数据库中新增的用户符合我们的预期。done() 方法表示测试已经完成。
结语
在本文中,我们介绍了如何在 Chai 中测试 GraphQL API,包括一个测试套件和两个测试用例。这些测试用例可以帮助我们确保我们的 GraphQL 查询和变异都正常工作,而不会在产品发布之前出现错误。通过熟练掌握这些技能,我们可以大大提高我们的测试效率和代码质量。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67d79a55a941bf7134d9c81f