Estoy tratando de simular una llamada a S3 usando el paquete aws-sdk-mock . Quiero simular getObject en un depósito, de modo que en lugar de createReadStream() creando un flujo de red desde un depósito, cree un flujo legible desde un archivo local en mi conjunto de pruebas.
Así es como me burlo de la llamada s3:
s3Spy = AWS.mock("S3", "getObject", { createReadStream: () => { return fs.createReadStream(testDataFile) } });Aquí está la línea donde se usa:
const stream = s3.getObject(params).createReadStream(); Puedo rastrear la stream con una llamada a console.log, y es claramente legible:
console.log(stream) Readable { _readableState: ReadableState { ... }, _events: [Object: null prototype] {}, _eventsCount: 0, _maxListeners: undefined, _read: [Function (anonymous)], [Symbol(kCapture)]: false }Sin embargo, si lo inspecciono más, no es un archivo legible:
console.log(stream.path) undefined ¿A qué createReadStream estoy llamando si no es el que está en mi simulacro? ¿Cómo puedo escribir esto para obtener los datos simulados que quiero usar?
Resolví el problema cambiando el código de burla:
s3Spy = AWS.mock("S3", "getObject", fs.createReadStream(testDataFile));