Ответ 1
Если вы хотите очистить все вызовы от функции макета, вы можете использовать:
const myMock = jest.fn();
// ...
myMock.mockClear();
В очистить все, хранящиеся в макете, попробуйте вместо этого:
myMock.mockReset();
В Sinon-заглушке очень просто восстановить функциональность.
const stub = sinon.stub(fs,"writeFile",()=>{})
...
fs.writeFile.restore()
Я хочу сделать то же самое с Jest. Самый близкий я получаю этот уродливый код:
const fsWriteFileHolder = fs.writeFile
fs.writeFile = jest.fn()
...
fs.writeFile = fsWriteFileHolder
Если вы хотите очистить все вызовы от функции макета, вы можете использовать:
const myMock = jest.fn();
// ...
myMock.mockClear();
В очистить все, хранящиеся в макете, попробуйте вместо этого:
myMock.mockReset();
Наконец, я нашел работоспособное решение благодаря вкладу @nbkhope.
Итак, следующий код работает, как ожидалось, то есть он издевается над кодом, а затем восстанавливает исходное поведение:
const spy = jest.spyOn(
fs,
'writeFile'
).mockImplementation((filePath,data) => {
...
})
...
spy.mockRestore()