typescript - 将 TypeScript 与 'aws-sdk-mock' 一起使用

标签 typescript aws-sdk aws-sdk-mock

所以有人问了这个问题,这里有一个答案: Is it possible to use TypeScript with 'aws-sdk-mock'

我没有足够的声誉来询问答案,所以我不得不创建另一个问题,因为我无法得到答案。

这是我的全部测试代码:

const AWSMock = require('aws-sdk-mock');
const AWS = require('aws-sdk');
AWSMock.setSDKInstance(AWS);
AWSMock.mock('DynamoDB', 'putItem', function (params, callback) {
  console.log('MOCK WORKS!')
});

const ddb = new AWS.DynamoDB();
ddb.putItem(null, function(err, data) {
  console.log('NOT MOCKED!')
});

AWSMock.restore();

版本:

aws-sdk: 2.286.2

aws-sdk-模拟:4.0.0

测试框架:mocha 3.4.2

有什么想法吗?谢谢!

最佳答案

我遇到了同样的问题,最终解决方案很简单:我使用了错误的 AWS 实例。

在我看到的示例中,它们都在测试文件中创建了一个新的 AWS 实例,但对我有用的是使用源代码中的相同 AWS 实例我想测试的。

来源.ts

export const aws = require('aws-sdk')

export async function myFunction(bucket: string): Promise<string> {
    const params: any = { Bucket: bucket }
    const s3 = new aws.S3()

    s3.listObjects(params, (err: any, data: any) => {
        // ...
    })
}

源代码.test.ts

import * as AWSMock from "aws-sdk-mock"
import {aws, myFunction} from "source.ts"

describe("myFunction", () => {
    it("should be mocked", async () => {
        AWSMock.setSDKInstance(aws)
        AWSMock.mock('S3', 'listObjects', (params: any, callback: Function) => {
            callback(null, {Contents: [{Key: 'file1.csv'}]})
        })

        // ... 
        AWSMock.restore()
    })   
})

请注意,params 的类型不必是 aws-sdk 类型定义中的实际类型。 any 对我有用。

此外,就像其他答案所说的那样,您需要在您正在测试的函数内初始化 AWS 服务 ( source )

关于typescript - 将 TypeScript 与 'aws-sdk-mock' 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51678615/

相关文章:

javascript - 无法从 firebase 获取 token 用于消息传递

amazon-web-services - 使用预先签名的 url 将文件上传到 Amazon S3 时出现 CORS 错误

javascript - aws-sdk-mock 模拟 s3.putBucketPolicy 不起作用

ssl - 使用SDK时S3 Protocol是否加密传输?

javascript - 如何使用 JavaScript 删除 AWS S3 上的对象?

node.js - 如何为正在访问 aws 资源的函数编写单元测试?

node.js - 如何在使用 aws-sdk-mock 时进行参数验证

javascript - 有没有办法让未链接的节点不以半径分布?

typescript - 返回相同 T 或不同 R 值的泛型函数不能接受高阶函数 '( i : T ) => i' 作为默认参数值

typescript - typescript 中的默认值和泛型