如何测试AWS集成服务流程?

时间:2017-02-21 16:15:15

标签: amazon-web-services amazon-s3 integration-testing amazon-dynamodb aws-lambda

我得到了以下流程:

  • 将文件放入S3
  • 触发Lambda函数
  • DynamoDB表

由于这个流程,我创建了一个集成测试,首先将文件放到S3。

之后,我检查了由Lambda函数更新的DynamoDB表上的记录。

当我搜索我的记录时出现问题,实际上我找不到它,因为有一些时间间隔我需要等待表更新。在第二次运行中,我能够看到之前测试运行的记录。

我的问题是如何进行此集成测试?如何检查更新的表记录,之后需要在一段时间后使用lambda触发器调用插入。

到目前为止我尝试了什么:

  • 使用承诺
  • 使用setTimeout()

这些对我来说还不够好,请建议一些更好的方法。

我的代码:

it('Writing single record to DynamoDB - when data is valid JSON and updating the DB is Succeed',
    function(done) {

        var putObjectParams = {
            Bucket: BUCKET,
            Key: FILE_KEY,
            Body: 'some file content'
        };

        s3.putObject(putObjectParams, function(err, data) {
            if (err) {
                console.log(err, err.stack);
            } else {
                console.log(JSON.stringify(data));
            }
        });


        var docClient = new AWS.DynamoDB.DocumentClient();
        var queryParams = {

            TableName: ENV + "-WFMHistoricalUnprocessedFiles",
            ProjectionExpression: "filePath, ingressTime, dir, fileName",
            KeyConditionExpression: "#column = :fileFullPath",
            ExpressionAttributeNames: {
                "#column": "filePath"
            },
            ExpressionAttributeValues: {
                ":fileFullPath": BUCKET + "/" + FILE_KEY
            }
        };

        docClient.query(queryParams, function(err, data) {

            if (err) {
                console.log("Unable to query. Error:", JSON.stringify(err, null, 2));
            } else {
                console.log("Query succeeded.");
                data.Items.forEach(function(item) {
                    console.log(JSON.stringify(item));
                });
            }
        });

    });

0 个答案:

没有答案