我正在尝试使用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
如果不是我嘲笑那个人吗?我如何写这个,以便我拉入我想要使用的模拟数据?
我通过更改mock代码解决了这个问题:
s3Spy = AWS.mock("S3", "getObject", fs.createReadStream(testDataFile));