Introduction
Resolver unit tests check if small parts of your GraphQL server work correctly. They help find mistakes early and keep your code reliable.
Jump into concepts and practice - no test required
Resolver unit tests check if small parts of your GraphQL server work correctly. They help find mistakes early and keep your code reliable.
describe('resolverName', () => { it('should do something expected', () => { // Arrange: set up data or mocks // Act: call the resolver function // Assert: check the result matches expected }); });
describe groups related tests.
it defines a single test case.
getUser resolver returns the correct user name when given ID '1'.describe('getUser', () => { it('returns user data for valid ID', () => { const result = getUser(null, { id: '1' }, context); expect(result.name).toBe('Alice'); }); });
createPost returns the post with the right title after creation.describe('createPost', () => { it('creates a post and returns it', () => { const input = { title: 'Hello', content: 'World' }; const result = createPost(null, { input }, context); expect(result.title).toBe('Hello'); }); });
This example shows two tests for the getUser resolver: one for a valid user ID and one for an invalid ID.
const { describe, it, expect } = require('@jest/globals'); // Sample resolver function function getUser(parent, args, context) { const users = { '1': { id: '1', name: 'Alice' }, '2': { id: '2', name: 'Bob' } }; return users[args.id] || null; } describe('getUser resolver', () => { it('returns user data for valid ID', () => { const result = getUser(null, { id: '1' }, null); expect(result).toEqual({ id: '1', name: 'Alice' }); }); it('returns null for invalid ID', () => { const result = getUser(null, { id: '3' }, null); expect(result).toBeNull(); }); });
Use mocks to simulate data sources when testing resolvers.
Keep tests small and focused on one behavior.
Run tests often to catch errors early.
Resolver unit tests check small parts of your GraphQL server.
They help make sure your resolvers return correct data.
Write simple tests using describe and it blocks.
describe to group tests and it or test for individual tests.it inside describe and uses expect properly.const resolver = () => ({ id: 1, name: 'Alice' });
describe('User resolver', () => {
it('returns correct user', () => {
expect(resolver()).toEqual({ id: 1, name: 'Alice' });
});
});toEqual, which compares object values deeply.describe('Test resolver', () => {
it('returns data', () => {
expect(resolver).toBe(data);
});
});resolver without parentheses, so it tests the function itself, not its return value.resolver().