mock fs.readFile - модульный тест - PullRequest
0 голосов
/ 18 января 2020

Я использую инфраструктуру Jest для модульного тестирования и наткнулся на сценарий для насмешки над fs.readFile. Я использовал spyOn и высмеивал реализацию. Мой код ниже

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();

});

Шпион не вызывается, когда я запускаю тестовый пример, и макет не работает. Оригинальная реализация всегда работает.

Моя функция, использующая 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**/   
    });
};

Вкратце, что я пытаюсь сделать

Как правильно смоделировать fs.readFile?

РЕДАКТИРОВАТЬ
Когда я попытался утешить ошибку в моей исходной функции обратного вызова, он выдал ошибку «нет такого файла». Но я ожидаю, что ошибка будет нулевой, так как я пытаюсь заставить ее вернуть значение как нулевое.

1 Ответ

1 голос
/ 20 января 2020

Благодаря @ J C Olivares,

проблема импорта 'fs' была здесь. В файле тестового примера я импортировал 'fs' как

import * as fs from 'fs';

Но файл с функцией имел импорт

import fs from 'fs';
...