подскажите как создать 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 работать.