jestでapiのスナップショットテスト



jestのスナップショットテスト使ってますか?
あるファイルに、変更があるか否かを判定するだけのテストですね。

実はスナップショットテストで、APIをテストすることが出来るんです。
APIに変更があったら教えてくれるのでとても便利ですよ。

ただし、テスト出来るのは、純粋で副作用のないAPI(同じリクエストに、同じレスポンスが帰ってくる)に限りますが、とても少ない記述量で、e2eテストを記述できるのは便利です。

以下サンプル

apiSnap.test.js
const axios = require('axios')

test('starwars api test', async () => {
  let response
  try {
    response = await axios.get('https://swapi.co/api/people/1')
    expect(JSON.stringify(response.data)).toMatchSnapshot()
  } catch(e) {
    fail()
  }
})

responseはJSON.stringifyでstringに変換してからsnapshotとして保存します。
json stringifyを使うと1行で、snapshotを作成出来ます。