如何从 fs.statSync 存根 isFile

How to stub isFile from fs.statSync

我正在为文件和路径操作编写单元测试,但我无法在 fs.statSync(filePath).isFile() 中存根 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'),
    });
  });

请指教

如果 fs.statSync 的存根按预期工作,它会提供 true。所以你不能在上面调用 isFile

所以我想你可以简单地在 statSync 提供的对象中模拟一个函数 isFile ,它将 return 为真:

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