我有一个查询语句,它返回PaginatedQueryList
并将其分配给列表。然后我在名单上操作。如何在单元测试时返回列表DynamoDB分页查询列表
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()
两次在我的逻辑测试