GraphQL 是一种现代化的 API 查询语言,它能够减少 API 端点的数量,提高数据交换效率。Jest 是一种流行的 JavaScript 测试框架,它采用了简单的API,易于使用。本文将介绍如何使用 Jest 自动化测试 GraphQL 服务器,以及通过 GraphQL 服务器测试的最佳实践。
Grafana GraphQL Server:简介
Grafana GraphQL Server 是一种基于 GraphQL 的服务器,它提供了一个用于监控和分析的面板和仪表盘。Grafana 支持多种数据源,包括 Graphite、Elasticsearch、InfluxDB 等。Grafana GraphQL 服务器的查询语言是 GraphQL,这意味着您可以使用 GraphQL 查询获取图表数据并显示在您自己的应用程序中。
使用 Jest 对 Grafana GraphQL Server 进行自动化测试
在本文中,我们将介绍如何使用 Jest 自动化测试 Grafana GraphQL Server。我们将使用 GraphQL 的查询功能,并对返回的数据进行断言。在进行测试之前,请确保已经安装了 Jest 以及所需的依赖项。
安装依赖项
npm i @nestjs/testing graphql jest-graphql-matcher
创建测试用例
首先,我们需要编写一个测试用例。在本例中,我们将编写一个简单的查询,该查询将返回 Grafana 的面板数据。
// javascriptcn.com 代码示例 import { Test } from '@nestjs/testing'; import { GraphqlOptions } from '../src/graphql.options'; import { AppModule } from '../src/app.module'; import { INestApplication } from '@nestjs/common'; import { graphql } from 'graphql'; import { introspectionQuery, printSchema } from 'graphql/utilities'; import { createTestClient } from 'graphql-tools'; import { DocumentNode } from 'graphql/language/ast'; import { matchers } from 'jest-graphql-matcher'; expect.extend(matchers); describe('AppController (e2e)', () => { let app: INestApplication; beforeAll(async () => { const moduleFixture = await Test.createTestingModule({ imports: [AppModule], }) .overrideProvider(GraphqlOptions) .useValue({}) .compile(); app = moduleFixture.createNestApplication(); await app.init(); }); afterAll(async () => { await app.close(); }); describe('Grafana API: Dashboard', () => { let query: DocumentNode; beforeAll(async () => { const intlQuery = await graphql( app.get(GraphqlOptions).schema, introspectionQuery, ); const schema = printSchema(app.get(GraphqlOptions).schema); const client = createTestClient({ schema, resolvers: app.get(GraphqlOptions).resolvers, }); query = client.query(` query { dashboards(limit:10) { id title created json } } `); }); test('should return 10 dashboards', async () => { const res = await graphql(app.get(GraphqlOptions).schema, query); expect(res).toEqualGraphQL(` query { dashboards(limit:10) { id title created json } } `); }); }); });
运行测试
接下来,我们需要在终端中运行 Jest 命令以进行测试。
npm run test
在测试运行期间,Jest 将会自动运行测试用例,并输出测试结果到终端。如果测试通过,Jest 将返回一个绿色的 "Pass" 标志,并输出测试结果。如果测试未通过,则 Jest 将返回一个红色的 "Fail" 标志,并给出详细的错误消息。
总结
通过本文的介绍和示例代码,你将学习到如何使用 Jest 测试 GraphQL 服务器,以及如何使用 GraphQL 的查询功能进行自动化测试。这些测试方法将有助于您确保 GraphQL 服务器的可靠性和性能。如果您是一个 Web 开发人员或者想要测试 Grafana GraphQL 服务器,这篇文章将会给您很好的指导。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653afdce7d4982a6eb54f4a3