如何模拟 AWS Lambda 调用
How to Mock AWS Lambda invoke
我有以下 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 非常陌生。有人可以帮忙吗?
没用过mock-aws,看来你是叫错了
改变这个:
AWSMock.mock(lambda, 'invoke', (params, callback) => {
// logic here
})
对此:
AWSMock.mock('lambda', 'invoke', (params, callback) => {
// logic here as normal
})
第一个参数必须是字符串。
我有以下 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 非常陌生。有人可以帮忙吗?
没用过mock-aws,看来你是叫错了
改变这个:
AWSMock.mock(lambda, 'invoke', (params, callback) => {
// logic here
})
对此:
AWSMock.mock('lambda', 'invoke', (params, callback) => {
// logic here as normal
})
第一个参数必须是字符串。