所以我一直在使用 AWS Lambda 和 NodeJS 6.10 开发一些代码。由于我缺乏集成测试方面的知识(别担心,单元测试已经完成),我没有测试我的代码。当然,我错过了一个导致两个不眠之夜的错误。即使在我放入这个之后它也会继续运行
return workerCallback(err);
我认为它会阻止该函数在 if 子句之后运行其他代码,因为我返回了它。无论如何,我可以通过在异步函数之后添加一个返回来解决我的问题
SQSService.deleteMessage
叫做。其余代码没有运行,lambda 函数按预期运行并结束。
现在是按预期工作的代码。
function myFoo(currentRequest,event, workCallback){
var current_ts = moment();
var req_ts = moment(currentRequest.request_timestamp);
if (req_ts.diff(current_ts, 'minutes') > 5) {
SQSService.deleteMessage(event.ReceiptHandle, function(err, data){
if (err) {
return workerCallback(err);
} else {
return workerCallback(null, "Request stale! Deleting from queue...");
}
}); //end of SQS Service
return; //This line... this line!
}
/* Codes below will execute because the code above is asynchronous
but it should not as the asynchronous code above is a terminator function
from a business logic point of view
*/
//more codes that will run should currentRequest.request_timestamp is 5 minutes past
}
有人可以指导我如何测试此代码或创建一个至少可以防止我再次犯同样错误的测试吗?我想通过测试避免这些错误再次发生。谢谢!