我有一個查詢語句,它返回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()
兩次在我的邏輯測試