I'm using assertj and Jackson's JsonNode combined. So far I've been using Assertions.assertThat(objectNode0).isEqualTo(objectNode1);
and everything works fine.
Now, I need to ignore some fields in the comparison, and the way I tried is by using usingRecursiveComparison
, but it fails to alert when objects are different.
Is there any way to overcome this? Here's my sample code:
public class Main {
public static void main(String[] args) {
ObjectMapper om = new ObjectMapper();
try {
JsonNode objectNode0 = om.readTree("{\"someNotImportantValue\":1,\"importantValue\":\"10\"}");
JsonNode objectNode1 = om.readTree("{\"someNotImportantValue\":15,\"importantValue\":\"1\"}");
boolean equals = objectNode0.equals(objectNode1);
System.out.println(equals); // prints false
//This works, but does not enable to ignore any field
//Assertions.assertThat(objectNode0).isEqualTo(objectNode1);
//We would expect this sentence to fail, since importantValue is still different, but it does not.
Assertions.assertThat(objectNode0).usingRecursiveComparison().ignoringFields("someNotImportantValue").isEqualTo(objectNode1);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}