В 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.
С помощью Марк Петерс I научилсячто я должен называть это так:
assertThat(contents, IsIterableWithSize.<Content>iterableWithSize(2));
, поскольку iterableWithSize
набирается для типа компонента вашего Iterable
, а не для конкретного типа итерируемого.
Но при запуске теста я получаю
java.lang.AssertionError: Expected:
an iterable with size <2>
got: org.springframework.data.neo4j.conversion.QueryResultBuilder$1@1970ae0
Пытаясь выяснить, 1) делаю ли я что-то не так, или 2) подколенный или 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?
Тестовый код https://github.com/anodynos/SpringDataNeo4jTrials/blob/master/src/test/java/sdnTests/test/HamcrestIteratorSizeTest.java