【发布时间】:2016-03-28 03:57:08
【问题描述】:
我有一个返回PaginatedQueryList 的查询语句,我将它分配给一个列表。然后我对列表进行操作。
List<MyClass> entries= mapper.query(MyClass.class, queryExpression);
//Logic to test
Map<String, Map> map = entries.stream()
.collect(Collectors.toMap(MyClass::getA, MyClass::getB));
....
....
我试着测试一下
when(mapper.query(eq(MyClass.class), any(DynamoDBQueryExpression.class)))
.thenReturn((PaginatedQueryList<MyClass>) list);
其中list是List<MyClass>(ArrayList),是我自己构造的,想传给主程序测试主逻辑。
但它会抛出
java.lang.ClassCastException:java.util.ArrayList 无法转换为 com.amazonaws.services.dynamodbv2.datamodeling.PaginatedQueryList
执行mappper.query(..)时如何发送列表。
动机是在执行mapper.query(..)时将我构建的列表发送给entries。
注意:
我也尝试发送mocked PaginatedQueryList,但当它发送entries.stream() 时,我想发送实际的流。
我试过了
when(paginatedQueryList.stream()).thenReturn(Stream.of(list.get(0), list.get(1)));
它抛出
java.lang.IllegalStateException: 流已经被操作或关闭 在 java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229)
注意 2:
我在逻辑中使用了两次entries.stream() 进行测试
【问题讨论】:
标签: java unit-testing amazon-web-services mockito amazon-dynamodb