コンテンツにスキップ

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

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

サンプルコード

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
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');
    });
});