使用文件系统对象使用 SDK 的 v3 模拟 GetObjectCommand 响应

编程入门 行业动态 更新时间:2024-10-05 07:26:54

使用<a href=https://www.elefans.com/category/jswz/34/1771295.html style=文件系统对象使用 SDK 的 v3 模拟 GetObjectCommand 响应"/>

使用文件系统对象使用 SDK 的 v3 模拟 GetObjectCommand 响应

我有一个方法可以从 s3 中提取并处理检索到的 gzip 文件。我正在尝试编写一个模拟检索的测试(使用从 FS 读取的文件),然后可以测试文件的处理。

aws-sdk-client-mock 绝对是我在其他地方使用过的方法,但在这里解析流类型有困难。

import {mockClient} from "aws-sdk-client-mock";

const s3ClientMock = mockClient(S3Client);

test("getJSONFroms3Item returns data correctly with a gzip file from s3", async () => {
    let stream: ReadStream = fs.createReadStream('../resources/persons.json.gz');
    s3ClientMock.on(GetObjectCommand).resolves({ Body: stream});
    const result =  await getJSONFroms3Item();
    expect(s3ClientMock).toHaveReceivedCommandWith(GetObjectCommand, {});
    expect (result).toContain({name: "Jane Doe", address: "happytown", lastUpdated: 1657116641655, isActive: true, status:"ACTIVE"})
});

我得到的错误是

   __test__/src/S3.test.ts:22:54 - error TS2322: Type 'ReadStream' is not assignable to type 'SdkStream<Readable | ReadableStream<any> | Blob | undefined> | undefined'.
  Type 'ReadStream' is not assignable to type 'Readable & SdkStreamMixin'.

我花了很长时间试图弄清楚如何从文件系统中获取可读文件,但没有运气。

我使用提供的答案 给我指导,但看不到让它工作。

沙箱在这里/

非常感谢任何帮助。

回答如下:

自版本 3.188.0(10 月 22 日)起,S3 客户端支持 util 函数来使用和解析响应流(以前我们必须手动执行的操作)。

要模拟响应,你需要用util函数包装它

sdkStreamMixin()

所以现在,你需要这样做

import { mockClient } from "aws-sdk-client-mock";
import { sdkStreamMixin } from '@aws-sdk/util-stream-node';

const s3ClientMock = mockClient(S3Client);

test("getJSONFroms3Item returns data correctly with a gzip file from s3", async () => {
    const stream = sdkStreamMixin(fs.createReadStream('../resources/persons.json.gz'))
    s3ClientMock.on(GetObjectCommand).resolves({ Body: stream});
    ...
});

更多推荐

使用文件系统对象使用 SDK 的 v3 模拟 GetObjectCommand 响应

本文发布于:2024-05-30 20:28:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770889.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件系统   对象   SDK   GetObjectCommand

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!