[英]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.