gpt4 book ai didi

java - 如何使用 Jackson 获取 JsonProcessingException

转载 作者:IT老高 更新时间:2023-10-28 20:51:18 24 4
gpt4 key购买 nike

可能是一个奇怪的问题,但确实我想在我的测试中实现更多覆盖,虽然我针对 JsonProcessingException 进行了编码,但我无法创建生成此异常的有效负载,可能是因为Jackson 非常聪明,可以将所有内容都转换为字符串,即使是坏字符串,它也符合 JSON 规范。我的问题是 jackson 很好:)

我基本上想要一个有效负载,当我运行它时,它会与 JsonProcessingException 中断:

String jsonPayload = objectMapper.writeValueAsString(payload);

我尝试过一些类似的方法:

HashMap<String, String> invalidJSONPayload= new HashMap<>();

invalidJSONPayload.put("021",021);
invalidJSONPayload.put("---",021);
invalidJSONPayload.put("~",021);

我不喜欢这种类型,所以请随意推荐另一种。例如,一个空对象会抛出 JsonMappingException,而我也已经捕捉到了。

最佳答案

我想做同样的事情,并最终通过使用 Mockito “spy” 函数来完成它,该函数用模拟对象包装了一个真实对象。所有对模拟对象的调用都会被转发到真实对象,除了那些你试图模拟的对象。例如:

ObjectMapper om = Mockito.spy(new ObjectMapper());
Mockito.when( om.writeValueAsString(ErrorObject.class)).thenThrow(new JsonProcessingException("") {});

om 的所有用法都将由底层 ObjectMapper 实例处理,直到传入 ErrorObject 的实例,此时 JsonProcessingException会被抛出。

新的JsonProcessingException 被创建为一个匿名类,因为它是一个 protected 类,并且只能实例化一个子类。

关于java - 如何使用 Jackson 获取 JsonProcessingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26716020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com