web-dev-qa-db-fra.com

hamcrest hasItem et hasProperty, vérifient s'il existe un objet avec une valeur de propriété

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 dont l'ID est Long.

Je reçois,

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

À partir de diverses documentations et autres pages de stackoverflow, il devrait être valide, mais j'obtiens l'erreur ci-dessus.

27
wenic

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

assertThat(actual, hasItem(Matchers.<YourPojo>hasProperty("id", equalTo(1L))));
54
pobrelkey

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

List<IssueDefinitionDto> definitions = ...; // Tested variable
...
assertThat(definitions, hasItem(hasProperty("id", is(10L))));
8
Cyva