Который является способом Jest для восстановления смешной функции

В Sinon-заглушке очень просто восстановить функциональность.

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

Я хочу сделать то же самое с Jest. Самый близкий я получаю этот уродливый код:

const fsWriteFileHolder = fs.writeFile
fs.writeFile = jest.fn()
...
fs.writeFile = fsWriteFileHolder 

Ответ 1

Если вы хотите очистить все вызовы от функции макета, вы можете использовать:

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

В очистить все, хранящиеся в макете, попробуйте вместо этого:

myMock.mockReset();

Ответ 2

Наконец, я нашел работоспособное решение благодаря вкладу @nbkhope.

Итак, следующий код работает, как ожидалось, то есть он издевается над кодом, а затем восстанавливает исходное поведение:

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