Я согласен с @AironBrynchke использовать последовательный подход.Поскольку вы уже используете async/await
, давайте не будем использовать обратный вызов.
Вот как я это делаю, чтобы проверить это.
const AWS = require('aws-sdk');
exports.handler = async (event) =>
{
try
{
const lambda = new AWS.Lambda();
await lambda.invoke(
{
FunctionName: 'whatever', // I changed it for test sample
Payload: 'payload'
}).promise();
}
catch (ex)
{
console.error(ex);
}
};
А для теста
const chai = require('chai');
const sinon = require('sinon');
const assert = chai.assert;
const proxyrequire = require('proxyquire');
const invokeStub = sinon.stub().returns({
promise: sinon.stub().resolves()
});
// here we want to mock `Lambda`
const src = proxyrequire('path-to-your-source-file', {
'aws-sdk': {
Lambda: sinon.stub().returns({
invoke: invokeStub
})
}
});
describe('lambda test', function() {
it('runs test', async function() {
await src.handler({});
assert(invokeStub.calledWith({ FunctionName: 'whatever', Payload: 'payload' }));
})
});