2

私はPaginatedQueryListを返すクエリ文を持っています。これをリストに割り当てます。それから私はリストを操作します。ユニットテスト時にリストを返す方法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)); 
.... 
.... 

私は

listは、私は自分自身を構築し、メインのロジックをテストするために、メインプログラムにそれを渡したい List<MyClass>(ArrayListの)である
when(mapper.query(eq(MyClass.class), any(DynamoDBQueryExpression.class))) 
           .thenReturn((PaginatedQueryList<MyClass>) list); 

のようにそれをテストしてみました。

しかし、それは

と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:

は、私はPaginatedQueryListを嘲笑し、2回(entries.stream()の各アクセス用)list.stream()を送る送信することによって、問題を解決することができました

答えて

0

をテストするために私のロジックで二回entries.stream()を使用しています。

when(paginatedQueryList.stream()).thenReturn(list.stream()).thenReturn(list.stream()); 

これ以上の方法はありません。

関連する問題