🐷
OpenAPI からモックデータを生成して Jest する
やったこと
swagger-parser を使って openapi.yaml を読み込み、exmaple をモックデータとして使って Jest を実行できるようにした
具体的な手順
@apidevtools/swagger-parser をインストール
npm install -D @apidevtools/swagger-parser
setup ファイルで beforeAll を使うために、jest.config.js を修正
// jest.config.js
module.exports = {
...
// setupFiles: ['./setup.js'], ← before
setupFilesAfterEnv: ['./setup.js'], // ← after
}
setup ファイルで、OpenAPI からデータを取得
/// setup.js
...
import SwaggerParser from '@apidevtools/swagger-parser'
const OPENAPI_PATH = '../backend/doc/openapi.yaml'
beforeAll(async () => {
// $ref を解消して openapi を取得
const openapi = await SwaggerParser.dereference(OPENAPI_PATH)
// モックデータを取得するための関数
const mockResponse = ({ path, method, status }) => {
return openapi.paths[path][method].responses[status].content[
'application/json'
].example
}
// global に渡す
global.mockResponse = mockResponse
})
...
test ファイルで取得する
// sample.spec.js
...
beforeEach(() => {
// eslint-disable-next-line no-undef
sampleBooks = mockResponse({
path: '/api/v1/books',
method: 'get',
status: '200',
}).data
// => ex) [{ id: 1, title: 'Sample Book1' }]
})
...
まとめ
最高
参考記事
Discussion