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';

Relaterade artiklar