hamcrest hasItem et hasProperty, affirment si un objet avec la valeur de la propriété existe

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.equalTo;

assertThat(actual, hasItem(hasProperty("id", equalTo(1L))));

où réel est un POJO avec id aussi Long.

j'obtiens

La méthode assertThat(T, Matcher<? super T>) le type MatcherAssert n'est pas applicable pour les arguments (List<Pojo>, Matcher<Iterable<? super Object>>)

à Partir de divers documents et autres stackoverflow pages, il devrait être valide, mais j'obtiens l'erreur ci-dessus.

25
demandé sur benjamin.d 2013-11-20 22:11:23
la source

2 ответов

essayer de remplir explicitement le paramètre type-en supposant actual est un List<YourPojo>, essayez de l'appeler:

assertThat(actual, hasItem(Matchers.<YourPojo>hasProperty("id", equalTo(1L))));
52
répondu pobrelkey 2013-11-20 22:23:19
la source

la version plus courte quand vous n'avez pas à spécifier le type de classe:

List<IssueDefinitionDto> definitions = ...; // Tested variable
...
assertThat(definitions, hasItem(hasProperty("id", is(10L))));
7
répondu Cyva 2016-11-25 19:26:40
la source

Autres questions sur