Как выполнить модульное тестирование функций Graphql Resolver, созданных с использованием apollo-resolvers - PullRequest
0 голосов
/ 14 марта 2019

Я создал преобразователь s (userresolver.js) с использованием модуля apollo-resolvers 'npm, как показано ниже.

import { createResolver } from 'apollo-resolvers';
import {  isInstance } from 'apollo-errors';

const baseResolver = createResolver(
  null,
  (root, args, context, error) => isInstance(error) ? error : new UnknownError()
);



const users = baseResolver.createResolver(
  (parent, args, { models, me } ) => {
         return Object.values(models.users);
  }
);

export default {
  Query: {
    users
  }
}

;

Они также работают нормально, когда я проверяю запросы после запуска сервера.

Теперь я хочу выполнить модульное тестирование функций распознавателя.

Я не уверен, как это сделать.Может кто-нибудь помочь мне о том, как провести модульное тестирование функций распознавателя.Я использую мокко с cha i для тестирования моего проекта.

1 Ответ

1 голос
/ 14 марта 2019

Вы можете попробовать easygraphql-tester , у него есть метод, который поможет вам протестировать распознаватели.

Здесь - документация к нему.

Пример:

Resolver

"use strict";

const license = (__, args, ctx) => {
  const { key } = args;

  return {
    id: "1234",
    body: "This is a test license",
    description: `This is a description with key ${key}`
  };
};

module.exports = {
  Query: {
    license
  }
};

Тест

"use strict";

const fs = require("fs");
const path = require("path");
const { expect } = require("chai");
const EasyGraphQLTester = require("easygraphql-tester");

const resolvers = require("../resolvers");
const schemaCode = fs.readFileSync(
  path.join(__dirname, "..", "schema.gql"),
  "utf8"
);

describe("Test resolvers", () => {
  let tester;
  beforeAll(() => {
    tester = new EasyGraphQLTester(schemaCode, resolvers);
  });

  it("should return expected values", async () => {
    const query = `
      query GET_LICENSE($key: String!) {
        license(key: $key) {
          id
          body
          description
        }
      }
    `;

    const args = {
      key: "1234"
    };

    const result = await tester.graphql(query, {}, {}, args);
    expect(result.data.license.id).to.be.eq("1234");
    expect(result.data.license.body).to.be.eq("This is a test license");
    expect(result.data.license.description).to.be.eq(
      `This is a description with key ${args.key}`
    );
  });
});
...