如何在单元测试 DynamoDB 分页查询列表时返回列表
2022-09-03 18:36:44
我有一个返回 a 的查询语句,并将其分配给 List。然后我对列表进行操作。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);
其中(ArrayList)是我自己构造的,并希望将其传递给主程序以测试主逻辑。list
List<MyClass>
但它抛出
java.lang.ClassCastException: java.util.ArrayList 不能 cast to com.amazonaws.services.dynamodbv2.datamodeling.PaginatedQueryList
如何在执行时发送列表。mappper.query(..)
动机是将我在执行时构建的列表发送到 。entries
mapper.query(..)
注意:
我还尝试发送PaginatedQueryList,但是当它这样做时,我想发送实际的流。我试过像mocked
entries.stream()
when(paginatedQueryList.stream()).thenReturn(Stream.of(list.get(0), list.get(1)));
它抛出
java.lang.IllegalStateException:stream 已经在 java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229) 上操作或关闭了
注2:
我在逻辑中使用了两次来测试entries.stream()