【问题标题】:Writing tests with local dynamodb using mocha使用 mocha 使用本地 dynamodb 编写测试
【发布时间】:2017-07-21 05:04:56
【问题描述】:

我正在将 Dynamodb 用于我正在编写的 api 服务。我开始编写测试,发现没有命令(或查询)会破坏表中的所有“项目”。我正在使用 vogels 访问 dynamodb。

我通常在每次测试前清理桌子。鉴于没有删除表中所有项目的单个命令(或查询),我该怎么做?

如果我一一删除每个项目,则测试会在所有项目被删除之前开始执行。

【问题讨论】:

    标签: mocha.js amazon-dynamodb chai


    【解决方案1】:

    CRUD 操作在 DynamoDB 中是原子操作。没有可用于删除 DynamoDB 表中所有项目的 API。

    解决方案 1:

    推荐的最佳解决方案是删除表并重新创建它。

    解决方案 2:

    使用带有 DeleteRequest 的 batchWriteItem 一次性删除多个项目。批量写入的最大请求数为 25 项。

    等待:-

    执行删除表后,请等待资源不可用。同样的,执行create table后,需要等到资源可用。

    var params = {
      TableName: 'STRING_VALUE' /* required */
    };
    dynamodb.waitFor('tableNotExists', params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });
    

    通过定期调用 底层 DynamoDB.describeTable() 操作每 20 秒(在 最多 25 次)。

    【讨论】:

    • 1.我试过第一个。删除正在发生,但娱乐没有及时发生。在重新创建表之前,测试正在运行(我们必须在每次测试之前清理数据库)。对此有什么建议吗? 2. 即使我使用 batchWriteItem API,我也必须进行两次调用。一个是获取项目列表,另一个是删除它。问题再次是测试将在删除发生之前运行。你是如何让它为你工作的?
    • 用等待资源更新了我的答案。它有两种风格,即 tableNotExists 和 tableExists。
    猜你喜欢
    • 2013-06-25
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多