【问题标题】:Which createReadStream am I calling here?我在这里调用哪个 createReadStream?
【发布时间】:2021-11-27 01:11:24
【问题描述】:

我正在尝试使用 aws-sdk-mock 包模拟对 S3 的调用。我想在存储桶上模拟 getObject,以便 createReadStream() 从存储桶创建网络流,而不是从我的测试套件中的本地文件创建可读流。

这是我模拟 s3 调用的方式:

s3Spy = AWS.mock("S3", "getObject", {
    createReadStream: () => {
        return fs.createReadStream(testDataFile)
    }
});

这是使用它的行:

const stream = s3.getObject(params).createReadStream();

我可以通过 console.log 调用来追踪stream,而且它显然是可读的:

console.log(stream)
Readable {
  _readableState: ReadableState {
    ...
  },
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  _read: [Function (anonymous)],
  [Symbol(kCapture)]: false
}

但是,如果我进一步检查,它不是可读的文件:

console.log(stream.path)
undefined

如果不是我模拟的那个createReadStream,我会打电话给哪个?我怎样才能写这个,以便我提取我想使用的模拟数据?

【问题讨论】:

    标签: javascript amazon-web-services amazon-s3 jestjs


    【解决方案1】:

    我通过更改模拟代码解决了这个问题:

    s3Spy = AWS.mock("S3", "getObject", fs.createReadStream(testDataFile));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多