Eu tenho uma aula de DTO
class MyDto {
private String f1;
private String f2;
private String f3;
// constructor
// get set equals/hashCode
}
Ele tem equal
/ hascode
par que leva em conta todos os 3 campos.
Por favor, dê uma olhada no teste
...
var actualList = service.getActualList(...)
assertThat(actualList, containsInAnyOrder(new MyDto("a1","","c1"), new MyDto("a2","","c2")) )
...
Ele falha porque f2
é gerado no lado do banco de dados (então não consigo prever o valor desse campo).
Quero passar um comparador personalizado para fazer uma comparação específica de teste. É possível fazer isso no Hamcrest?
PS: Não quero reescrever equals/hashcode porque não estará correto do meu ponto de vista de lógica de negócios
Você pode usar
containsInAnyOrder(Matcher...)
e passar uma lista vararg deMatcher
instâncias em vez de uma lista deMyDto
. Você pode encontrar uma adequadaMatcher
na biblioteca Hamcrest, como maybeHasPropertyWithValue
ou algo similar. Caso contrário, escreva sua própria classe implementandoMatcher
:Você pode usar a comparação ignorando os campos da biblioteca AssertJ.
Ou se você ainda quiser usar o Hamcrest, crie um comparador personalizado conforme sua vontade e use