如何开玩笑测试(Body as any).pipe(zlib.createGunzip())?

问题描述 投票:0回答:0

我一直致力于创建一个单元测试来测试我的导入函数实现,但我无法从

.pipe()
行通过。以下是我的一些功能行,以了解更多背景信息:

  const { Body } = await s3.send(command);
  console.log('body');
  console.log(Body);
  const input = (Body as any).pipe(zlib.createGunzip());
  console.log('done body');
  const lines = readline.createInterface({
    input,
    crlfDelay: Infinity,
  });
  console.log('done lines');

这是我的单元测试代码:

describe('Import function', function () {
  it('Import file', async () => {
    const stream = createReadStream('./tests/data/test.csv');
    const sdkStream = sdkStreamMixin(stream);
    s3Mock.on(GetObjectCommand).resolves({ Body: sdkStream });

    const event: any;
    let context: any;
    const result = await handler(event, context);
    console.log(result);
  });
});

正在打印

console.log('body');
console.log(Body);
行,并且
Body
具有下一个值:

console.log
      ReadStream {
        fd: null,
        path: './tests/data/GLOBAL.csv',
        flags: 'r',
        mode: 438,
        start: undefined,
        end: Infinity,
        pos: undefined,
        bytesRead: 0,
        _readableState: ReadableState {
          objectMode: false,
          highWaterMark: 65536,
          ...

尽管

Body
有一个值,但在运行测试时我收到下一个错误:

console.log
      TypeError: Cannot read properties of undefined (reading 'on')
          at ReadStream.Readable.pipe (node:internal/streams/readable:711:8)

有什么想法吗?

我使用以下方法实现了 s3 读取模型:https://www.npmjs.com/package/aws-sdk-client-mock 之后,我尝试向

.on
对象添加另一个
s3Mock
值,但没有成功。

node.js typescript jestjs pipe ts-jest
© www.soinside.com 2019 - 2024. All rights reserved.