web-dev-qa-db-fra.com

Quelle est la meilleure façon de restaurer la fonction simulée

Dans le talon de Sinon, il est très facile de restaurer les fonctionnalités.

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

Je cherche à faire la même chose avec Jest. Le plus proche que je reçois est ce code laid:

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

Si vous voulez effacer tous les appels à la fonction de simulation, vous pouvez utiliser:

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

Pour tout effacer stocké dans la maquette, essayez plutôt:

myMock.mockReset();
14
nbkhope

Enfin, j'ai trouvé une solution viable grâce à la contribution de @ nbkhope.

Ainsi, le code suivant fonctionne comme prévu, c'est-à-dire qu'il se moque du code puis restaure le comportement d'origine:

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