可能是一个奇怪的问题,但实际上我想对我的测试进行更多的覆盖,尽管我针对 JsonProcessingException
进行了编码,但我无法创建生成此异常的有效负载,也许是因为 Jackson 非常聪明并将所有内容转换为字符串,即使对于错误的字符串,它也会绕过 JSON 规范。我的问题是杰克逊相当不错 :)
我基本上想要一个有效载荷,当我运行它时,它会破坏 JsonProcessingException
:
String jsonPayload = objectMapper.writeValueAsString(payload);
我试过一些像:
HashMap<String, String> invalidJSONPayload= new HashMap<>();
invalidJSONPayload.put("021",021);
invalidJSONPayload.put("---",021);
invalidJSONPayload.put("~",021);
我对类型不感兴趣,所以请随意推荐另一种类型。例如,一个空对象抛出 JsonMappingException
我也已经抓住了那个。
原文由 bitoiu 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想做同样的事情,并最终通过使用 Mockito 的“间谍”功能实现了它,该功能用模拟对象包装了真实对象。所有对模拟对象的调用都会转发给真实对象,除了那些你试图模拟的。例如:
om
的所有用法都将由底层 ObjectMapper 实例处理,直到ErrorObject
的实例被传入,此时JsonProcessingException
将被抛出。新的
JsonProcessingException
被创建为匿名类,因为它是受保护的类并且只能实例化子类。