GraphQL测试架构和解析器

时间:2018-08-20 15:28:01

标签: graphql

我尝试过的事情
我正在使用JEST来测试解析器和架构,但是在创建文件夹和结构时遇到了麻烦。当前我导入解析器函数和调用函数并比较结果或检查字段是否已定义,但有时无法满足复杂的情况。

我在寻找什么

测试graphql模式和解析器功能的最佳实践,以及推荐或主要使用哪种测试工具?

3 个答案:

答案 0 :(得分:1)

目前有多个框架,可以使用例如YAML文件对API进行集成测试。您可以在此处指定请求和响应。一种更简单的方法是使用Jest快照,并使用graphql中的graphql-js函数简单地执行测试查询。它将返回一个带有结果的承诺,然后您可以await将其与快照匹配。

import { graphql } from 'graphql';
import schema from './schema';
import createContext from './createContext';

describe('GraphQL Schema', () => {
  let context;

  before(() => {
    context = createContext();
    database.setUp();
  });

  after(() => {
    database.tearDown();
  });

  it('should resolve simple query', async () => {
    const query = '{ hello }';
    const result = await graphql(schema, query, null, context);

    expect(result).toMatchSnapshot();
  });
});

提示:您还可以创建动态测试,例如,通过从目录中的文件读取查询,然后对其进行迭代来为每个文件创建一个新测试。一个示例(虽然不是GraphQL)可以是found on my Github

答案 1 :(得分:1)

此外,您可以尝试使用该npm软件包来测试您的架构,查询和变异...使用mocha&chai进行示例。这是link

您需要做的是导入架构并传递到easygraphql-tester,然后您可以创建UT。

答案 2 :(得分:0)

没有可推荐的方法。专门用于文档和文件夹结构。

就我而言,我正在研究此repo。这是我在第一级的文件夹结构:

src/
├── App.js
├── configs
├── helpers
├── index.js
├── middlewares
├── models
├── resolvers
├── routes
├── schema
├── seeds
├── templates
├── tests
└── utils

在根目录下,我有test文件夹,主要用于检出App的基本行为和一些utils函数。另一方面,在解析器内部,我对GraphQl,查询和变异进行了主要测试。

src/resolvers/
├── camping
│   ├── camping.mutations.js
│   ├── camping.query.js
│   ├── camping.query.test.js
│   └── camping.resolver.js
├── clientes.resolver.js
├── guest
│   ├── guest.mutation.js
│   ├── guest.mutation.test.js
│   ├── guest.query.js
│   ├── guest.query.test.js
│   └── guest.resolver.js
├── index.js
├── turno
│   ├── turno.mutations.js
│   ├── turno.query.js
│   ├── turno.query.test.js
│   └── turno.resolver.js
└── users
    ├── user.mutations.js
    ├── user.mutations.test.js
    ├── user.queries.js
    ├── user.query.test.js
    └── user.resolver.js

每个单个解析器都有其测试,您可以在那里检查基本端点是否按预期工作。

我计划进行一些工作流程测试,稍后将在测试根文件夹中。