hamcrest (1.3.RC2、JUnit 依存関係なし) で、SpringDataNeo4j ライブラリで iterableWithSize() を使用すると失敗します。
私はこのようにIterator
パラメータ化された(の拡張)を持っていますContent
EndResult<Content> contents = contentRepository.findAllByPropertyValue("title", "*");
どこEndResult
ですか
パッケージ org.springframework.data.neo4j.conversion; public インターフェイス EndResult extends Iterable {...}
そしてContent
aa @NodeEntity
Pojoです。
Mark Petersの助けを借りて、私はこのように呼ぶべきであることを学びました
assertThat(contents, IsIterableWithSize.<Content>iterableWithSize(2));
なぜなら、 iterable 自体の具象型ではなく、iterableWithSize
あなたのコンポーネント型に型付けされているからです。Iterable
しかし、テストが実行されると、
java.lang.AssertionError: Expected:
an iterable with size <2>
got: org.springframework.data.neo4j.conversion.QueryResultBuilder$1@1970ae0
1) 何か間違ったことをしている、または 2) hamcrest または 3) Spring Data Neo4j にバグがあるかどうかを把握しようとして、手元のオブジェクトをチェックしましたが、次のように問題ないようですIterable
:
public static int iterSize(Iterator iter){
int i=0;
while (iter.hasNext()){ i++;iter.next();}
return i;
}
public static int iterSize(Iterable iter) {return iterSize(iter.iterator());}
assertEquals("contents contain 2 items", 2, iterSize(contents)); // works OK
だから、ハムクレストに問題があると結論付けているのではないでしょうか。IsIterableWithSize で似たようなことを試した人はいますか?