简体   繁体   English

如何模拟AWS Lambda调用

[英]How to Mock AWS Lambda invoke

I have the following common.js code. 我有以下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);
  });
}

I tried to mock above as, 我试图嘲笑上面,

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);
  })

});

The above code is throwing some weird error. 上面的代码引发了一些奇怪的错误。 And not covering the lines in code coverage. 并且不在代码覆盖范围内。 I am very much new to NodeJS. 我对NodeJS非常陌生。 Can somebody please help? 有人可以帮忙吗?

I haven't used mock-aws before, but it looks like you're calling it wrong. 我以前没有使用过模拟aws ,但是看起来您在说错了。

Change this: 更改此:

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

to this: 对此:

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

The first parameter must be a string. 第一个参数必须是字符串。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM