小编Rya*_*yan的帖子

使用 Promise 的 Lambda 的 sinon 存根

我刚刚开始使用 sinon,并且在消除 DynamoDB 调用方面取得了一些初步成功:

sandbox = sinon.createSandbox()
update_stub = sandbox.stub(AWS.DynamoDB.DocumentClient.prototype, 'update').returns({
  promise: () => Promise.resolve(update_meeting_result)
})
Run Code Online (Sandbox Code Playgroud)

这很好用。

但我还需要存根 Lambda,但同样的方法不起作用:

lambda_stub = sandbox.stub(AWS.Lambda.prototype, 'invoke').returns({
  promise: () => Promise.resolve({lambda_invoke_result}) // 
})
Run Code Online (Sandbox Code Playgroud)

这样,我得到了错误:Cannot stub non-existent property invoke

示例实现:

const AWS = require("aws-sdk")
AWS.config.update({region: 'us-west-2'})
const dynamodb = new AWS.DynamoDB.DocumentClient()
const lambda = new AWS.Lambda()

// lambda function handler
exports.handler = async (event) => {
  let result = await dynamodb.get({/* some get config */}).promise()
  // do stuff ...

  // kick off next …
Run Code Online (Sandbox Code Playgroud)

unit-testing node.js sinon amazon-dynamodb aws-lambda

3
推荐指数
1
解决办法
1935
查看次数