GraphQL测试模式和解析器

GraphQL测试模式和解析器,graphql,Graphql,我尝试的 我使用JEST测试解析程序和模式,但在创建文件夹和结构时遇到问题。目前我导入解析程序函数和调用函数,并比较结果或检查是否定义了字段。但它有时不能满足复杂的场景 我在寻找什么 测试graphql模式和解析器函数的最佳实践,以及推荐或主要使用的测试工具是什么?有多个框架可用于集成测试API,例如使用YAML文件。您可以在那里指定请求和响应。一种更简单的方法是使用Jest快照,并使用graphql js中的graphql函数简单地执行测试查询。它将返回一个带有结果的承诺,然后您可以等待它并期

我尝试的
我使用JEST测试解析程序和模式,但在创建文件夹和结构时遇到问题。目前我导入解析程序函数和调用函数,并比较结果或检查是否定义了字段。但它有时不能满足复杂的场景

我在寻找什么


测试graphql模式和解析器函数的最佳实践,以及推荐或主要使用的测试工具是什么?

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

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();
  });
});

Tipp:您还可以创建动态测试,例如,从目录中的文件读取查询,然后对它们进行迭代,为每个文件创建一个新的测试。这方面的一个例子(不是GraphQL)可以是。

此外,您可以尝试这个npm包,它将测试您的模式、查询和突变。。。这里有一个使用摩卡和柴的例子。。这是你的电话号码


您需要做的是导入模式并传递到easygraphql测试仪,然后您可以创建UT。

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

就我而言,我正在做这件事。这是我第一层的文件夹结构:

src/
├── App.js
├── configs
├── helpers
├── index.js
├── middlewares
├── models
├── resolvers
├── routes
├── schema
├── seeds
├── templates
├── tests
└── utils
在根目录中,我有一个test文件夹,主要用于检查应用程序的基本行为和一些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
每个解析器都有自己的测试,您可以在那里检查基本端点是否按预期工作


我计划做一些工作流测试,稍后它们将放在测试根文件夹中。

您想要什么类型的测试?我对GraphQL的感觉是,只有集成测试才是真正值得的,因为如果您编写单元测试,您需要编写数百行代码来创建一个模拟环境来测试一行代码(至少这是代码中解析器的平均长度)是的,我更专注于整合测试。谢谢你,伙计。回购协议已经过时了。你的例子是不可缩放的。