javascript - mocka fs.readFile - Enhetstest
Jag använder Jest-ramverket för enhetstestning och stötte på ett scenario där jag behövde mocka fs.readFile. Jag har använt spyOn och mockat implementationen. Min kod nedan
test_file.ts
import * as fs from 'fs';
it('read File', () => {
const spy = jest.spyOn(fs, 'readFile')
.mockImplementation((_, callback) => callback(null, Buffer.from('Sample')));
// Calling the function
myFunction('./path');
expect(spy).toHaveBeenCalled();
});
Spionen kallas inte när jag kör testfallet och mocken fungerar inte. Den ursprungliga implementeringen fungerar alltid.
Min funktion som använder fs.readFile
myFunction = (path) => {
// Reading the file
fs.readFile(path, async (error, file) => {
console.log(error) // No such file error thrown instead of null
/** Block of code with async work**/
});
};
Kort sagt, vad jag försöker göra
Hur man mockar fs.readFile korrekt?
REDIGERA
När jag försökte logga felet i min ursprungliga callback-funktion, kastade det felet 'ingen sådan fil'. Men jag förväntar mig att felet ska vara null eftersom jag låtsas att det returnerar värdet null.
Svar #1
Tack till @JC Olivares,
importen av 'fs' var problemet här. I testfallsfilen importerade jag 'fs' som
import * as fs from 'fs';
Men filen med funktionen hade import
import fs from 'fs';
