Yuuki008

Jestの mockClear, mockReset, mockRestore の使い分け

2024-10-10 (3m ago)5 views

1. 結論

メソッド呼び出し履歴のクリア実装/戻り値のリセットオリジナルの実装に戻す主な用途
mockClear呼び出し履歴のみをリセット
mockReset実装や戻り値も含めて完全にリセット
mockRestore✅(スパイのみ)✅(スパイのみ)✅(スパイのみ)元の実装に戻し、テスト終了後に元に戻したい場合に使用

2. 各メソッドの挙動の違い

mockClear

mockReset

mockRestore

3. 具体例

mockClearの使用例

const myMock = jest.fn();
myMock('first call');
myMock.mockClear();
console.log(myMock.mock.calls.length); // 出力: 0

mockResetの使用例

const myMock = jest.fn().mockReturnValue('initial value');
console.log(myMock()); // 出力: 'initial value'
myMock.mockReset();
console.log(myMock()); // 出力: undefined

mockRestoreの使用例

const myFunction = jest.spyOn(myModule, 'myFunction');
myFunction.mockImplementation(() => 'mocked value');
console.log(myModule.myFunction()); // 出力: 'mocked value'
myFunction.mockRestore();
console.log(myModule.myFunction()); // オリジナルの実装に戻る

4. まとめ