我当时使用Joi验证来验证传入的AWS lambda事件,但被告知一个名为vandium(https://www.npmjs.com/package/vandium)的项目,该项目处理由S3事件通知触发的lamabda的事件验证。代码如下:
const vandium = require('vandium');
exports.handler = vandium.s3(async(event, content) => {
...
});
但这导致组件测试失败-使用chai,hook-std,黄瓜,aws-sdk-mock和aws-lambda-mock-content。我认为这是发生问题的组件测试中的“何时”步骤:
When('the lambda is triggered by the event notification', async() => {
let unhookStdOut = hookStd.stdout(output => {
world.logs += output;
});
let unhookErrOut = hookStd.stderr(output => {
world.errors += output;
});
try {
world.actualOutput = await index.handler(world.event, ctx);
unhookStdOut();
unhookErrOut();
} catch (error) {
console.log(error);
world.actualError = error;
}
});
我看不到问题出在哪里,所以我注释掉了unhookStdOut行(第2至4和第12行)以查看日志记录,我得到了:
TypeError: unhookErrOut is not a function
at CustomWorld.When
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:228:7)
这没有任何意义,因为在添加钒之前,我没有更改任何组件测试,并且它们可以正常工作。任何想法,这是钒的错误吗?