web-dev-qa-db-ja.com

モックされた関数を復元するためのJestの方法はどれですか

Sinonのスタブでは、機能の復元が非常に簡単です。

const stub = sinon.stub(fs,"writeFile",()=>{})
...
fs.writeFile.restore()

Jestでも同じことをしたいと思っています。最も近いのはこのthisいコードです:

const fsWriteFileHolder = fs.writeFile
fs.writeFile = jest.fn()
...
fs.writeFile = fsWriteFileHolder 
20
Dejan Toteff

モック関数に対して すべての呼び出しをクリア にしたい場合は、以下を使用できます。

const myMock = jest.fn();
// ...
myMock.mockClear();

すべてをクリア モックに保存するには、代わりに試してください:

myMock.mockReset();
14
nbkhope

最後に、@ nbkhopeの貢献のおかげで実行可能なソリューションを見つけました。

したがって、次のコードは期待どおりに機能します。つまり、コードをモックしてから元の動作を復元します。

const spy = jest.spyOn(
    fs,
    'writeFile' 
  ).mockImplementation((filePath,data) => {
  ...
})
...
spy.mockRestore()
23
Dejan Toteff