JsonProcessingException

JsonProcessingException

可能是一个奇怪的问题,但确实我想在测试中获得更多的覆盖范围,尽管我是根据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("") {});

底层对象ObjectMapper实例将处理om的所有用法,直到传入ErrorObject实例为止,此时将抛出JsonProcessingException

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

10-01 04:33