next.js API routesのテスト
apiResolver()を使うと良いそうだ
code:pages/api/ping.js
export default (req, res) => {
res.status(200).json({ pong: 'pong' })
}
code:pages/api/__tests__/ping.test.js
import http from 'http'
import listen from 'test-listen'
import { apiResolver } from 'next-server/dist/server/api-utils'
import ping from 'pages/api/ping'
test('responds with 200 and { "pong": "pong" }', async () => {
let requestHandler = (req, res) => apiResolver(req, res, undefined, ping)
let server = http.createServer(requestHandler)
let url = await listen(server)
let response = await fetch(url)
let json = await response.json()
expect(response.status).toBe(200)
expect(json).toEqual({ pong: 'pong' })
})