在 hamcrest(1.3.RC2,没有 JUnit 依赖项)中,我无法将 iterableWithSize() 与 SpringDataNeo4j 库一起使用。
我有一个像这样Iterator
参数化的(扩展)Content
EndResult<Content> contents = contentRepository.findAllByPropertyValue("title", "*");
EndResult
在哪里
包 org.springframework.data.neo4j.conversion;公共接口 EndResult 扩展 Iterable {...}
并且Content
是一个@NodeEntity
Pojo。
在马克彼得斯的帮助下,我知道我应该这样称呼它
assertThat(contents, IsIterableWithSize.<Content>iterableWithSize(2));
因为iterableWithSize
是在 your 的组件类型上键入的Iterable
,而不是在 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 类似的东西?