我有一个查询语句,它返回 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(..)
.
动机是把我写的清单发给你 entries
执行时 mapper.query(..)
.
注:
我还试着发了封信 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()
两次在我的逻辑测试
3条答案
按热度按时间bcs8qyzn1#
mockito有一些强大的工具。
这将返回一个嘲笑
PaginatedQueryList
将所有方法调用转发给list
.alen0pnh2#
我通过发送mocked来解决这个问题
PaginatedQueryList
然后发送list.stream()
两次(每次访问entries.stream()
).欢迎采用更好的方法。
vxf3dgd43#
我的答案是在测试中模拟分页QueryList的通用解决方案(可能对Googler有用,因为这个主题没有太多答案)。
在我的测试中,这起到了作用:
所以,如您所见,我模拟了paginatedquerylist并模拟了它的listiterator()方法。