简介
在前端开发中,GraphQL 已经逐渐成为了一种流行的 API 开发工具。在使用 GraphQL 进行前端开发时,我们需要一个用于进行测试的工具,来测试我们开发的 GraphQL 服务是否符合要求。这个时候,npm 包 expect-browser-graphql 就派上了用场。这个小而强大的工具可以帮助我们进行 GraphQL 测试,并且提供了很多辅助功能,比如可读性强的测试报告。
本篇文章将会详细介绍如何使用 expect-browser-graphql 进行 GraphQL 测试,并且会提供一些示例代码以供参考。
安装
要使用 expect-browser-graphql 进行 GraphQL 测试,我们需要先安装它。可以通过以下命令进行安装:
npm install expect-browser-graphql --save-dev
安装完成后,我们就可以直接在代码中使用它了。
使用
expect-browser-graphql 可以使用在 Node.js 中,也可以使用在浏览器端。这里我们介绍在 Node.js 中使用的方法。
首先,我们需要引入 expect-browser-graphql 的模块:
const expectGraphql = require('expect-browser-graphql');
然后,我们需要编写一个测试用例。下面是一个示例代码:
-- -------------------- ---- ------- ----- - --- - - ------------------------- ----- - ------------ - - --------------------------------- ----- - ---------------- - - --------------------------------- ----- - ------ - - ---------------- ----- -------- - ---- ---- ----- - ------ ------ - -- ----- --------- - - ------ - ------ -- -- ------ -------- -- -- ----- ------ - --- -------------- --------- --------- --- ----- - ----- - - ------------------------- ---------- ------ ----- ------- ----- ---------- - ----- -------- - ----- ------- ------ -- ----- -- --- ------------------------------------------- --------- ---
在这段代码中,我们使用了 Apollo Server 和 Apollo Server Testing 来进行 GraphQL 测试。我们先定义了一些 GraphQL 类型和解析器,然后将它们传递给 ApolloServer。通过使用 createTestClient,我们可以从我们的 ApolloServer 中创建出一个测试客户端。最后,我们编写了一个测试用例,使用 expect 来断言发送的请求是否符合预期。
接下来,我们可以在命令行中输入以下命令来运行测试代码:
mocha test.js
如果测试顺利通过,那么我们就可以在命令行中看到测试结果。
可辅助的测试功能
除了简单的 GraphQL 测试之外,expect-browser-graphql 还提供了很多辅助功能。以下是一些常用的功能:
- 支持验证响应数据类型
- 支持验证响应数据的属性个数
- 支持深度比较两个对象是否相等
- 支持在测试报告中输出详细的错误信息
我们来看一个示例代码,来展示如何使用 expect-browser-graphql 实现这些功能:
-- -------------------- ---- ------- ----- - --- - - ------------------------- ----- - ------------ - - --------------------------------- ----- - ---------------- - - --------------------------------- ----- - ------ - - ---------------- ----- - ------------- - - ---------------------------------- ----- -------- - ---- ---- ----- - ----------- ------ ------- - ---- ------- - --- ---- -------- ------ - -- ----- --------- - - ------ - -------- --- - -- -- -- - -- --- --- ---- - ------ - --- ---- -------- --- -- - ---- - ------ ----- - -- -- -- ----- ------ - --- -------------- --------- --------- --- ----- - ----- - - ------------------------- ---------- ------ --------- ----- ---------- - ----- -------- - ----- ------- ------ -- ----------- ---- - -- ------- - -- --- --------------------------------------- ----- - -------- - --- ---- -------- ---- -- -- --- -------------------------------------------------------------------- ---------- ----------------------------------------------- -------- -------- --- ------- ----- ----------- ---- ---
在这段代码中,我们还使用了 Chai 和 expect-browser-graphql 进行了一些验证。我们定义了一个 GraphQL 类型 Account,然后编写了一个查询 Account 的解析器,如果输入的 id 不为 123,我们将返回 null。
我们通过创建测试客户端来进行测试,在测试用例中,我们断言我们的 GraphQL 查询中的账号 id 和 balance 是否等于我们期望的值。我们还会使用 expect-browser-graphql 的一些辅助功能:
- 我们使用 to.deep.equal 来深度比较两个对象是否相等。
- 我们使用 to.be.an('object').that.has.all.keys 来断言 response 是否返回了 data 和 errors 两个键。
- 我们使用 containLiteErrors 来判断存在 LiteError 类型的错误,并提供了详细的错误信息。
由于 expect-browser-graphql 提供了这些强大的辅助功能,我们可以更方便地进行 GraphQL 测试,并且在错误时发现问题的根源。
结语
本文详细介绍了 npm 包 expect-browser-graphql 的使用方式,并提供了一些示例代码。使用 expect-browser-graphql 可以帮助我们更方便地进行 GraphQL 测试,并且提供了一些强大的辅助功能,方便我们在调试时快速定位问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600556f781e8991b448d3dc8