подскажите как создать GraphQL test на конкретную мутацию

подскажите как примитивно сделать тест кодов.

                  mutation
createUser: async (root, args, {}) => {
const existedUser = await User.findOne({ email: args.email });
if (existedUser) throw new ApolloError("User already exists");

const hashedPass = await bcrypt.hash(args.password, 10);
args.password = hashedPass;
const userId = uuidv4();

return await User.create({ ...args, userId });},

              typeDefs    
type Mutation {
createUser(
  firstName: String!
  lastName: String!
  email: String!
  password: String!
): User

Ответы (1 шт):

Автор решения: Alexander Yukal

Можно с помощью supertest отправлять GraphQL запросы вот таким образом:

const request = require('supertest');
const express = require('express');
const app = express();

const bearerToken = '...bearerToken...';

// Если используете jest, использование clearAllMocks() может быть полезным.
// Это позволяет очищать результаты каждого теста и запоминать
// только актуальные показания каждого теста в отдельности.
// подробнее: https://jestjs.io/docs/en/jest-object#jestclearallmocks
afterEach(() => jest.clearAllMocks());

describe('GraphQL Mutation Test', () => {
  it('create user', async () => {
    const res = await request(app)
      .post('/graphql')
      .set('Authorization', `Bearer ${bearerToken}`)
      .send({query: `mutation {
          createUser(
            firstName: "firstName",
            lastName: "lastName",
            email: "[email protected]",
            password: "password"
          ) { id, firstName, lastName, email, password }
        }`
      })
      .expect(200);

    const { errors, data: { createUser } } = res.body;

    // Ожидаемый результат
    const expected = {
      id: 1,
      firstName: 'firstName',
      lastName: 'lastName',
      email: '[email protected]',
      password: 'password'
    };

    expect(createUser).toMatchObject(expected);
    expect(errors).toBeUndefined();
  });
});

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

→ Ссылка