У меня есть лямбда-функция AWS, подобная этой:
exports.handler = function(event, context, callback) {
const myModel = exports.deps().myModel;
return tools.checkPermission(event)
.then((id) => myModel.create(JSON.parse(event.body), id))
.then((campaign) =>
tools.handleAPIResponse(
callback,
data,
201,
Object.assign({Location: event.path + '/' + data.id,}, tools.HEADERS)
)
).catch(err => tools.handleAPIError(callback, err));
};
Я пишу тестовый пример, используя sinon.js, просто чтобы проверить, все ли функции в моей лямбда-функции были вызваны путем заглушения всех функций.как
myModel.create
tools.checkPermission
tools.handleAPIError
tools.handleAPIResopnse
Я окуриваюсь и тестирую вот так:
it('should call all functions ', () => {
const event = {};
createMyStub = sinon.stub(myModel, 'create');
createMyStub.withArgs(sinon.match.any).returns(Promise.resolve('Hello'));
const checkPermission = sinon.stub(tools, 'checkPermission');
checkPermission.withArgs(sinon.match.any).returns(Promise.resolve('user'));
const handleAPIResponse = sinon.stub(tools, 'handleAPIResponse');
handleAPIResponse.withArgs(sinon.match.any).returns('Done');
const callback = sinon.spy();
API.handler(event, {}, callback);
expect(checkPermission.called).to.be(true);
expect(handleAPIResponse.called).to.be(true);
expect(createMyStub.called).to.be(true);
createMyStub.restore();
checkPermission.restore();
handleAPIResponse.restore();
});
Но я не получаю ожидаемых результатов.Также, как я могу увидеть содержимое обратного вызова, когда я не заглушаю tools.handleAPIResponse, и ожидаю фактический результат в обратном вызове.