如何在使用AWS-mock时在回调函数中模拟AWS响应



上下文

我使用Typescript和aws-sdk-mock来模拟各种aws函数的响应。在我的回购中添加了几个新包后,我的大部分测试都没有通过

error TS2769: No overload matches this call.
Overload 1 of 2, '(err: undefined, data: StartExecutionOutput): void', gave the following error.
Argument of type 'string' is not assignable to parameter of type 'StartExecutionOutput'.
Overload 2 of 2, '(err: AWSError, data?: undefined): void', gave the following error.
Argument of type '"invoked"' is not assignable to parameter of type 'undefined'.

我理解这个错误,我理解下面的代码应该导致这个错误,因为回调函数中data参数的预期返回类型应该是StartExecutionOutput类型,而我试图用字符串调用它。

AWSMock.mock('StepFunctions', 'startExecution', (params, callback) => {
fn();
callback(null, 'invoked');
});

我不明白的是,为什么这只是我更新软件包后的一个问题。我添加的软件包(axios和我公司拥有和编写的软件包)与AWS代码无关。

我知道我可以通过更改所有的AWS Mock来返回正确的类型来解决这个问题,但我无法访问,也不想浪费时间创建所有内部AWS类型的测试对象以在这些回调中返回。

我的问题

为什么这只是我更新包后的问题?

我能在任何地方都轻松地抑制这个错误吗?这样我就可以在这些回调中返回我想要的任何内容吗?

感谢

package.json中的包

我应该注意,除了添加了公司包和axios之外,develop中的包json(通过测试)和我的分支(失败测试)完全相同。

"dependencies": {
"(company package obscured for privacy)": "^1.0.31",
"@types/aws-lambda": "^8.10.59",
"@types/jest": "^26.0.15",
"@types/uuid": "^8.3.0",
"aws-sdk": "^2.1046.0",
"axios": "^0.27.2",
"eslint-config-airbnb": "^18.2.0",
"full-icu": "^1.3.1",
"luxon": "^1.25.0",
"module-alias": "^2.2.2",
"ts-loader": "^8.0.6",
"typescript": "^4.0.3",
"uuid": "^8.3.1",
"webpack": "^5.1.3",
"webpack-cli": "^4.1.0",
"webpack-node-externals": "^2.5.2"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^4.5.0",
"@typescript-eslint/parser": "^4.5.0",
"aws-sdk-mock": "^5.1.0",
"elasticmq-npm": "^0.13.10",
"eslint": "^7.11.0",
"eslint-config-airbnb-typescript": "^12.0.0",
"eslint-plugin-import": "^2.22.1",
"husky": "^4.3.0",
"jest": "^26.6.0",
"jest-junit": "^12.0.0",
"mocked-env": "^1.3.2",
"nodemon": "^2.0.6",
"pm2": "^5.1.0",
"prettier": "^2.1.2",
"serverless": "^2.46.0",
"serverless-dynamodb-local": "^0.2.39",
"serverless-offline": "^6.8.0",
"serverless-offline-sqs": "^4.0.1",
"ts-jest": "^26.4.1"
}

我使用aws-sdk,v2遇到了这个过载问题。Github上有一个关于它的线程,看起来没有解决,不幸地关闭了。

他们线程中的指导是升级到SDK的v3。

最新更新