如何模拟AWS Lambda调用

时间:2019-07-19 08:43:07

标签: javascript node.js unit-testing aws-lambda mocha

我有以下common.js代码。

const AWS = require('aws-sdk');

exports.callNextLambda = function callNextLambda(lambdaName, payload) {
  const lambda = new AWS.Lambda();
  lambda.invoke({
    FunctionName: lambdaName,
    InvocationType: 'Event',
    Payload: payload,
  }, (err, data) => {
    if (err) console.log(err, err.stack);
    else console.log(data);
  });
}

我试图以此作为嘲笑,

it('MockAWS.mock should mock Lambda invoke', () => {
  const lambda = new AWS.Lambda();
  AWSMock.mock(lambda, 'invoke', (params, callback) => {
    const awsResponse = {
      LogResult:'some-data',
      Payload:'{\'contentType\':\'text/plain\',\'message\':\'some-other-data\',\'status\':200}',
      StatusCode:200
    };
    callback(null, awsResponse);
  })

});

上面的代码引发了一些奇怪的错误。并且不在代码覆盖范围内。我对NodeJS非常陌生。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我以前没有使用过{{3}},但似乎您在说错了。

更改此:

email+SOMETHING@domain.toplevel

对此:

AWSMock.mock(lambda, 'invoke', (params, callback) => {
  // logic here
})

第一个参数必须是字符串。