⚠️
This is the documentation for the old GraphQL Yoga version 2. We recommend upgrading to the latest GraphQL Yoga version 5.
Migrate to GraphQL Yoga v5
Migrate to GraphQL Yoga v5
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'
)