GraphQL API 是一种强大的 API 类型,它允许您以更好的方式查询和获取数据。但是,为了确保 API 的正确性和稳定性,我们需要进行测试。在本文中,我们将使用 Chai 来测试 GraphQL API。
Chai 简介
Chai 是一个流行的 JavaScript 测试库,它提供了一种易于使用的断言语法,可以轻松地编写测试用例。它支持多种风格,包括 BDD、TDD 和 QUnit,可以与不同的测试框架一起使用。
准备工作
在开始之前,我们需要安装一些必要的软件包。我们将使用以下软件包:
- chai:用于编写测试用例的断言库
- mocha:用于运行测试用例的测试框架
- supertest:用于测试 HTTP 请求的库
- graphql:用于编写和运行 GraphQL 查询的库
您可以使用 npm 或 yarn 来安装这些软件包。在您的项目目录中运行以下命令:
npm install chai mocha supertest graphql --save-dev
或者
yarn add chai mocha supertest graphql --dev
编写测试用例
现在我们已经安装了必要的软件包,我们可以开始编写测试用例了。我们将测试一个简单的 GraphQL API,它允许我们查询和获取一些用户数据。
编写 API
首先,我们需要编写一个简单的 GraphQL API。在您的项目目录中创建一个名为 server.js
的文件,并添加以下代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- - ----------- - - ------------------- -- -- ------ ----- ------ - ------------- ---- ---- - --- --- ----- ------- ------ ------- - ---- ----- - ------ -------- - --- -- -------- ----- ----- - - - --- -- ----- ----- ----- ------ ---------------------- -- - --- -- ----- ----- ----- ------ ---------------------- -- -- -- -- -------- ----- --------- - - ------ -- -- ------ -- -- -- ------- ---- ----- --- - ---------- -- -- ------- --- ------------------- ------------- ------- ---------- --------- ----- ---- -- ------ ---------------- -- -- - ------------------- ------- -- ---- ------- ---
在上面的代码中,我们定义了一个名为 User
的类型,它包含 id
、name
和 email
字段。我们还定义了一个名为 Query
的类型,它允许我们查询用户数据。我们使用 buildSchema
函数来创建 schema。
我们还模拟了一些用户数据,并定义了一个名为 users
的 resolver,它返回用户数据。我们使用 Express 创建了一个应用程序,并添加了 GraphQL 中间件。我们使用 graphqlHTTP
函数来创建一个 GraphQL 服务器,并将其挂载到 /graphql
路径上。我们还启动了应用程序,并将其监听在端口 3000 上。
编写测试用例
现在我们已经编写了一个简单的 GraphQL API,我们可以开始编写测试用例了。在您的项目目录中创建一个名为 test.js
的文件,并添加以下代码:
-- -------------------- ---- ------- ----- - ------ - - ---------------- ----- ------- - --------------------- ----- - ------- - - ------------------- ----- - -------------------- - - --------------------------------- -- -- ------ - -------- ----- - -------- - - -------------------- ----- - --------- - - ----------------------- -- ----- ------ ----- ------ - ---------------------- --------- --------- --- -- ------ ----- ----- - ----- ------- ---------- -- - ----- -------- - ----- -------------------------------- ----------------- ------- ------ --------- -- -------------- -------------------- -- ---------------- --- ---- - ----- --- ------------- -- ----- ---------- - ------ -------------- -- -- ------ ----------------- ----- -- -- - ---------- ------ - ---- -- ------- ----- -- -- - ----- ----- - - ----- - ----- - -- ---- ----- - - -- ----- ------ - ----- --------------- ------- -------------------------------------------- ---------------------------------------------------- ------------------------------------------------------ ------------------------------------------------------- --- ---------- ------ - ---- -- ----- --- ------ ----- -- -- - ----- ----- - - ----- - ----- - -- ---- ----- - - -- ----- ------ - ----- ------------- -------------------------------------------- ---------------------------------------------------- ------------------------------------------------------ ------------------------------------------------------- --- ---
在上面的代码中,我们首先导入了必要的软件包,包括 chai
、supertest
和 graphql
。我们还导入了我们的 schema 和 resolver。我们使用 makeExecutableSchema
函数来创建一个可执行 schema。
我们还创建了一个名为 query
的函数,它允许我们通过 HTTP 请求来测试我们的 API。我们使用 request
函数来发送 HTTP 请求,并使用 graphql
函数来执行 GraphQL 查询。我们还编写了两个测试用例,它们测试我们的 API 是否能够正确地返回用户数据。第一个测试用例使用 graphql
函数来测试 API,而第二个测试用例使用 query
函数来测试 API。
运行测试用例
现在我们已经编写了测试用例,我们可以使用 Mocha 来运行它们。在您的项目目录中运行以下命令:
npx mocha test.js
或者
yarn mocha test.js
如果一切正常,您应该会看到测试用例通过了。
结论
在本文中,我们学习了如何使用 Chai 来测试 GraphQL API。我们编写了一个简单的 GraphQL API,并编写了测试用例来测试它。我们使用了 chai
、mocha
、supertest
和 graphql
等软件包来编写测试用例。测试是保证 API 正确性和稳定性的重要手段,希望本文能够帮助您更好地进行 GraphQL API 测试。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6756f25c6c15453263045913