У меня есть POJO, и я использую Джексона для десериализации его в POJO. Я хочу регистрировать атрибуты значения ключа, о которых я не знаю. Для этого я использую JsonAnySetter следующим образом:
@Value
@Slf4j
@Builder
public class Book {
private String titleId;
private String bookName;
private List<String> authors;
@JsonAnySetter
public void ignored(String key, Object value) {
log.warn("Received a key which hasn't been mapped. Key: {}, Value: {}", key, value);
}
}
Теперь, чтобы проверить это в моем Junit, как проверить, что метод, который игнорируется, вызывается?
@Test
public void given_unknown_key_ensure_it_is_logged() {
ObjectMapper objectMapper = new ObjectMapper();
String test = "{\"randomField\": \"test\"}";
Book book = objectMapper.readValue(test, Book.class);
ArgumentCaptor<Book> captor = ArgumentCaptor.forClass(Book.class);
verify(book, times(1)).ignored("randomField", "test");
}
Мне нужно использовать реальный объект Book, но это тоже надо смоделировать, поэтому я не уверен, как мне поступить в этом случае.