如何模拟AWS SDK v3的Node.js?



我使用Node.js开发了一些AWS lambda,它通过AWS SDK v3利用了DynamoDB。

我不知道如何使用jest正确地模拟DynamoDBClient进行单元测试。

const LambdaTester = require('lambda-tester')
const {DynamoDBClient} = require("@aws-sdk/client-dynamodb")
const handler = require('./my-handler').handler
describe('handler', function () {
it('Handler should work properly', async function () {
const response = {
Item: {
a: {S: 'a'},
b: {S: 'b'}
}
}
DynamoDBClient.mockImplementation(() => {
return {
send: () => response
}
})
await LambdaTester(handler)
.event({
// ...
})
.expectResult((res) => {
// ...
})
})
})

当我运行测试时,它似乎试图执行真正的代码,并抛出一个异常。

ResourceNotFoundException: Requested resource not found
at deserializeAws_json1_0GetItemCommandError (./node_modules/@aws-sdk/client-dynamodb/protocols/Aws_json1_0.ts:3128:39)

如果您想测试dynamoDB,这个库(https://www.npmjs.com/package/dynamodb-local)对我来说工作得很好。它的作用是在执行案例期间在本地部署dynamoDB。我使用的是dynamoDB v2 &v3 .

**唯一的要求是在我们的机器上安装java (JRE),因为使用JAR文件在本地部署dynamo而不是docker映像**。

希望帮助!

相关内容

最新更新