【发布时间】:2014-11-03 14:13:23
【问题描述】:
可能是一个奇怪的问题,但确实我想在我的测试中实现更多的覆盖率,虽然我针对JsonProcessingException 进行了编码,但我无法创建产生此异常的有效负载,可能是因为杰克逊非常聪明而且将所有内容都转换为字符串,即使对于坏字符串,它也符合 JSON 规范。我的问题是杰克逊很好:)
我基本上想要一个有效载荷,当我运行它时,它会与JsonProcessingException 中断:
String jsonPayload = objectMapper.writeValueAsString(payload);
我尝试过一些类似的方法:
HashMap<String, String> invalidJSONPayload= new HashMap<>();
invalidJSONPayload.put("021",021);
invalidJSONPayload.put("---",021);
invalidJSONPayload.put("~",021);
我对这种类型并不在意,所以请随意推荐另一种。例如,一个空对象会抛出 JsonMappingException,而我也已经捕捉到了。
【问题讨论】:
-
好吧,你可以模拟一个
ObjectMapper并让它抛出那个异常,因为ObjectMapper不是最终的 -
这不是在模拟测试本身吗,我想重现一个实际上可以在正在运行的应用程序的上下文中发生的场景。也许一个不存在?如果是这样,为什么例外?感谢您的回答。
-
好吧,我以为您想测试代码在引发此异常时的行为,这就是我建议这样做的原因
-
我想这是有道理的,如果没有其他建议,我不妨这样做。我只是想应该有一种方法可以使用某种无法正确解析为 JSON 的随机对象来产生该异常。该死的杰克逊,它是智能解析。
-
你可以尝试给它一些 XML... :-)