我有一个POJO,我正在使用Jackson将其反序列化为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对象,但这也必须被嘲笑,所以不确定在这种情况下我应该如何进行。
答案 0 :(得分:0)
创建Log
对象的模拟对象并将其设置在Book
类中。
这假设Log对象是静态的, 这似乎是合理的。