Как заглушить isFile от fs.statSync - PullRequest
0 голосов
/ 12 октября 2019

Я пишу модульный тест для манипуляций с файлами и путями, но не могу заглушить isFile в fs.statSync(filePath).isFile().

Я получаю следующую ошибку:

ReferenceError: isFile is not defined

Мой код:

const readFiles = fs.readdirSync(directoryPath);
      readFiles.map(file => {
        filePath = path.resolve(process.cwd(), `${directoryPath}/${file}`);
        const isFile = fs.statSync(filePath).isFile();
        if (!isFile) {
          const filesList = fs.readdirSync(filePath).map(fileName => file + '/' + fileName);
          files = [
            ...files,
            ...filesList,
          ];
        } else {
          files = fs.readdirSync(directoryPath);
        }
      });

Вот мой код перед тестом, чтобы создать заглушки и назначить перемонтированный:

beforeEach(() => {
    helpers.__set__({
      'fs.statSync': sinon.stub().returns(true),
      isFile: sinon.stub().returns(true),
      'path.resolve': sinon.stub().returns('/a/b/c'),
    });
  });

пожалуйста, сообщите

1 Ответ

2 голосов
/ 12 октября 2019

Если ваша заглушка для fs.statSync работает как задумано, она предоставляет true. Таким образом, вы не можете вызвать isFile для него.

Итак, я полагаю, вы можете просто смоделировать функцию isFile в объекте, предоставленном statSync, который вернул бы true:

'fs.statSync': sinon.stub().returns({ isFile: () => true})
...