Sinon:嘲笑 NodeJs 的 fs.readFile() 不适用于 sinon.stub()

mer*_*tje 5 javascript unit-testing sinon sails.js

我正在尝试对模块中的一个函数进行单元测试,该模块使用其他依赖项,例如fsaws-sdk。

问题是我不能模拟fs图书馆..

var readFileAsync = Promise.promisify(require('fs').readFile);

function uploadAttachment(fileMetadata) {
    return readFileAsync(fileMetadata.fd)
    .then(function(file) {
      var options = {
       ...
      };
      return _uploadToS3(options);
    })
    .then(function (result) {
      return result;
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用 Sinon 库来删除fsreadFile和我自己的承诺函数。

stub = sinon
.stub(fs, 'readFile')
.returns("some data");

promiseStub = sinon
.stub(FileService, 'readFileAsync')
.returns("some data");
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的测试时,它似乎没有运行我的存根函数并且没有设置calledOnetrue,而是运行该fs函数并且找不到路径并抛出错误。

  [Error: ENOENT: no such file or directory, open '/path/to/file/3f191fa8-4330-436a-9f85-4054f8fa6a67.pdf']
Run Code Online (Sandbox Code Playgroud)