我在我的Alexa技能的lambda函数中有一个函数,我正在尝试使用aws-lambda-mock-context
节点包进行单元测试。我试图测试的方法包括调用DynamoDB以检查我的表中是否存在某个项。
目前,我的测试立即以CredentialsError: Missing credentials in config
失败。在this blog之后,我尝试将我的Amazon IAM凭据手动输入到.aws / credentials文件中。使用凭据进行测试会导致测试在超时之前运行30秒以上,而DynamoDB没有成功或失败的结果。我不知道从哪里开始。
我期待单元测试的功能如下:
helper.prototype.checkForItem = function(alexa) {
var registration_id = 123;
var params = {
TableName: 'registrations',
Key: {
id: {"N" : registration_id}
}
};
return this.getItemFromDB(params).then(function(data) {
//...
}
对DynamoDB的调用:
helper.prototype.getItemFromDB = function(params) {
return new Promise(function(fulfill, reject) {
dynamoDB.getItem(params, function(err, data) {
if (err == null) {
console.log("fulfilled");
fulfill(data);
}
else {
console.log("error recieving data " + err);
reject(null);
}
});
});
}
答案 0 :(得分:0)
如果你想进行单元测试你可以使用像nock这样的任何模拟库来模拟dynamo db端点,你也可以检查fiddler请求/响应你的应用程序对发电机数据库端点的影响,然后你可以进行故障排除。
答案 1 :(得分:0)
您可以使用SAM Local来测试lambda:
AWS SAM是一种快速简便的无服务器部署方式 应用程序,允许您编写简单的模板来描述您的 功能及其事件源(Amazon API Gateway,Amazon S3, Kinesis,等等)。基于AWS SAM,SAM Local是AWS CLI工具 这为您提供了开发,测试和分析的环境 您的无服务器应用程序在本地上传之前 Lambda运行时。您是否在Linux,Mac或Microsoft上进行开发 在Windows中,您可以使用SAM Local创建本地测试环境 模拟AWS运行时环境。这样做有助于您解决 表现等问题。使用SAM Local也可以更快, 您的Lambda函数代码的迭代开发,因为没有 需要将应用程序包重新部署到AWS Lambda运行时。 有关更多信息,请参阅使用SAM构建简单应用程序 本地