Skip to Content
SWR 2.0 is out! Read more →

Testing

GraphQL Yoga makes it easy to test your GraphQL API. It has built-in support for HTTP injection. You can use any testing framework of your choice.

Using inject

import { createServer } from '@graphql-yoga/common' const yoga = createServer() const { response, executionResult } = await yoga.inject({ document: '{ greetings }' }) console.assert(response.status === 200, 'Response status should be 200') console.assert( executionResult.data.greetings === 'This is the `greetings` field of the root `Query` type', `Expected 'This is the \`greetings\` field of the root \`Query\` type' but got ${executionResult.data.greetings}` )

Using fetch to Test Just Like Browsers on Any JS Environment

import { createServer } from '@graphql-yoga/common' const yoga = createServer() const response = await yoga.fetch('http://localhost:4000/graphql', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ query: '{ greetings }' }) }) console.assert(response.status === 200, 'Response status should be 200') const executionResult = await response.json() console.assert( executionResult.data.greetings === 'This is the `greetings` field of the root `Query` type', `Expected 'This is the \`greetings\` field of the root \`Query\` type' but got ${executionResult.data.greetings}` )

Using supertest For Node.js

import { createServer } from '@graphql-yoga/node' import request from 'supertest' import { deepEqual } from 'node:assert' const yoga = createServer() const response = await request(yoga).post('/graphql').send({ query: '{ greetings }' }) deepEqual(response.status, 200) deepEqual( response.body.data.greetings, 'This is the `greetings` field of the root `Query` type' )