コンパイラかく語りき

import { Fun } from 'programming'

Jest の toHaveBeenCalledWith の中身に snapshot を使いたい場合

Jest でモック関数を作成し、呼び出し内容をテストしたい場合があると思います。

そのときに、toHaveBeenCalledWith を使えば、呼び出し時の引数もテストできます。

しかし、 toHaveBeenCalledWith の中身が複雑・膨大になるような場合は、snapshot を利用したくなります。

そんなときは、モック関数に対して toMatchSnapshot を呼び出すと便利です。

const myMock = jest.fn()

expect(myMock).toMatchSnapshot()

これで同階層のディレクトリ内に、./__snapshots__/testname.spec.ts.snap が作成されます。snapshot の中身は、モック関数の呼出履歴です。

// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`Test spec name`] = `
[MockFunction] {
  "calls": Array [
    Array [
        // ここに引数
    ],
  ],
  "results": Array [
      // ここに返り値
  ],
}
`;

参考: [New matcher request] toHaveBeenCalled{Last}MatchingSnapshot · Issue #2814 · facebook/jest