在现代 Web 应用程序中,GraphQL 成为了一个非常流行的 API 技术。GraphQL 具有高度可组合性和灵活性,使开发人员能够更准确地控制他们的数据交流。然而,与其他技术一样,GraphQL 也需要进行测试以确保其有效性。本文将介绍如何使用 Chai 和 Mocha 在 Node.js 中测试 GraphQL 请求。
什么是 Chai 和 Mocha?
Chai 是一个行为驱动的 JavaScript 测试库,它使测试变得更直观。 Chai 可以结合其他测试框架,如 Mocha,使用,可以用于测试 Node.js 和浏览器中的应用程序。它提供了各种语言机制,包括断言语法、BDD 和 TDD 等,方便我们进行不同粒度的测试。
Mocha 是一个功能强大的 JavaScript 测试框架,它适用于浏览器和 Node.js 应用程序。Mocha 具有多种测试报告输出格式,并具有钩子机制,在测试运行之前和之后运行额外的代码。
单元测试 GraphQL 请求
我们来看一个具体的例子。假设我们已经有一个 GraphQL 服务,并且我们需要测试一个查询,查询所有用户的名字和邮箱地址。我们将测试以下的 GraphQL 查询:
{ users { id name email } }
安装依赖项
我们需要安装以下依赖项:
chai
:行为驱动的 JavaScript 测试库。mocha
:功能强大的 JavaScript 测试框架。graphql
:用于创建 GraphQL 查询的库。node-fetch
:用于从服务器获取响应的库。
您可以使用以下命令来安装这些依赖项:
npm i chai mocha graphql node-fetch
创建测试文件
我们现在来创建一个名为 users.test.js
的测试文件,并使用以下代码作为测试基础架构:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ------------ ----- ----- - ---------------------- ----- - -------- ----------- - - ------------------- --------------- ------- -- -- - ----- ------ - ------------- ---- ---- - --- -- ----- ------ ------ ------ - ---- ----- - ------ ------ - --- ----- ---- - - ------ -- -- - - --- -- ----- ------- ------ ------------------ -- - --- -- ----- ------- ------ ------------------ - - -- ---------- ------ ------- ---- ------------- -- -- - ----- ----- - - - ----- - -- ---- ----- - - -- ------ --------------- ------ ----------------- -- - --------------------------------------------------- ---------------------------------------------------------------- --------------------------------------------------- ---------------------------------------------------------------- --- --- ---------- ------ ------ ---- ----- -- -- - ----- --- - ---------------------------------------------- ---- --------- ------ ------------------- -- - --------------------------------- --- --- ---
在这个测试基础架构中,我们使用了 describe
函数来定义测试组,然后使用 it
函数来定义具体的测试用例,使代码变得易于阅读。首先,我们使用 buildSchema
函数创建一个包含一个用户类型和一个名为“用户”的查询类型的 GraphQL Schema。然后,我们定义了一个根对象,它有一个名为“用户”的属性,以数据数组形式返回一个有两个用户的对象数组。接着,我们使用 GraphQL 内置的 graphql
函数运行查询,并使用断言语法检查返回的结果是否正确。我们还测试了 GraphQL 服务是否返回了 HTTP 状态码 200
。
运行测试
我们可以使用以下命令来运行此测试:
mocha users.test.js
如果所有测试都通过,我们将看到以下输出:
Users query ✓ should return correct user information ✓ should return status code 200 2 passing (66ms)
结论
使用 Chai 和 Mocha 在 Node.js 中测试 GraphQL 查询是一种很好的方法,它可以帮助我们提高应用程序的质量和性能。我们可以使用 Mocha 中的钩子函数,在测试运行之前和之后运行额外的代码。并且,我们可以添加更多的测试用例和测试方法,这将有助于我们为我们的 GraphQL 应用程序提供更好的测试覆盖率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674d12c4a336082f25486900