繁体   English   中英

如何对 DynamoDB 增强型客户端事务请求进行单元测试

How to Unit Test DynamoDB Enhanced Client Transaction Request

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

因此,我在尝试为我的应用程序设置单元测试时遇到问题,因为当 Builder 构建 TransactionRequest 时,事务请求似乎在幕后进行了一些参数/表处理。 下面的代码片段供参考。

public CompletableFuture<Void> createNewUser(User user) {

     TransactPutItemEnhancedRequest<Profile> profileRequest = TransactPutItemEnhancedRequest.builder(Profile.class)
            .conditionExpression(Expression.builder()
                    .expression("attribute_not_exists(profileId)")
                    .build())
            .item(profile)
            .build();

    TransactPutItemEnhancedRequest<User> userRequest = TransactPutItemEnhancedRequest.builder(User.class)
            .conditionExpression(Expression.builder()
                    .expression("attribute_not_exists(userId)")
                    .build())
            .item(user)
            .build();

    TransactWriteItemsEnhancedRequest request = TransactWriteItemsEnhancedRequest.builder()
            .addPutItem(usersTableViaUser, userRequest)                
            .addPutItem(profilesTable, profileRequest)
            .build();  // CAUSES NPE

    etc...
}

注入 class 的表

DynamoDbAsyncTable<Profile> profilesTable,
DynamoDbAsyncTable<User> usersTableViaUser,

问题

问题是,似乎在事务的 build() 上,Builder class 基本上正在寻找一堆 Mocked DynamoDbAsyncTable 不提供的字段。 话虽如此,任何人都可以在不手动让模拟返回这些值的情况下找到解决此问题的方法吗? 真的不是这个设计的忠实粉丝,我希望这会被推迟到实际调用 dynamodb 的时候。

//TransactWriteItemsEnhancedRequest Class
private <T> TransactWriteItem generateTransactWriteItem(MappedTableResource<T> mappedTableResource, TransactableWriteOperation<T> generator) {
      return generator.generateTransactWriteItem(mappedTableResource.tableSchema(), DefaultOperationContext.create(mappedTableResource.tableName()), mappedTableResource.mapperExtension());
}
问题暂未有回复.您可以查看右边的相关问题.
3 DynamoDB 增强型客户端错误:无法解组响应

我是 DynamoDB 的新手,正在尝试编写一些 Java 代码来使用增强的 DynamoDB 客户端对具有 3 个线程的表进行并行扫描。 我正在使用 AWS Java SDK v 2.17.85。 我的代码在启动后不久在每个线程中抛出以下错误:无法解组响应(null)。 当我在单个线程中进行扫描时 ...

5 使用来自 java aws sdk 的 DynamoDb 增强客户端,您如何使用复合 keyConditionExpression 进行查询?

我有一个 DynamoDb 表,其中有两个键的 GSI - 字符串字段“id”(分区键)和数字字段“count”(排序键)。 我正在尝试使用此表上 SDK 中的 DynamoDbEnhancedClient 来计算如何通过 Spring Java 应用程序运行查询(而不是扫描)以获取关键条件表达式 ...

6 如何在MySql中对事务提交超时进行单元测试?

我正在编写一个单元测试,以重现在MySqlTransaction(使用C#和MySql Connector / Net)上调用Commit时达到超时的情况,但是我只是找不到强制这种超时的方法。 我所有的测试只会在对命令执行ExecuteNonQuery时引起延迟,但是一旦遇到transacio ...

9 如何对OData客户端进行单元测试?

我在服务器上使用Web Api OData v4,在客户端上使用OData客户端代码生成器 。 它工作正常,但我不知道如何在客户端上测试代码。 在服务器上,我公开了一个“Levels”dbSet。 这是客户端上的代码段: 我接受由T4模板生成的odata容器作为构造函数的参 ...

10 如何对电子邮件客户端进行单元测试

我正在研究桌面电子邮件客户端,我想对我的后端进行单元测试。 但是,我看不出有办法让这项工作成功。 为了使我的代码能够工作,它必须连接到正常工作的邮件服务器。 除非我将我的单元测试绑定到电子邮件帐户,并确保该帐户符合我的测试所期望的状态,否则我看不出如何管理它。 有没有人对如何测试这种 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM