JestでNodeのコアモジュールをモックする

  • fs とか child_process とかそういうやつをモックする方法
    • jest 単体の機能では実現できないのでハマるポイント
  • たぶん jest.MockedFunction でも同じことができる

サンプルコード

import { execSync } from 'child_process';
// まず全体をモックする
jest.mock('child_process');
// モックにする
const mockExecSync = execSync as jest.MockedFunction<typeof execSync>;
describe('execSync', () => { it('spyOn execSync', () => { // 対象をコール execSync('echo 1'); // 通る expect(mockExecSync).toHaveBeenCalled(); // 通る, echo 2とかにするとちゃんとコケてくれる expect(mockExecSync).toHaveBeenCalledWith('echo 1'); });
});