创建一个JsonProcessingException

时间:2015-05-27 06:18:09

标签: java junit jackson mockito

我试图创建一个由模拟对象抛出的JsonProcessingException。

when(mapper.writeValueAsString(any(Object.class))).thenThrow(new JsonProcessingException("Error"));

但是我无法创建JsonProcessingException对象,因为所有构造函数都受到保护。我该如何解决这个问题?

6 个答案:

答案 0 :(得分:19)

如何创建JsonProcessingException类型的匿名异常

VERBOSE: Loading module from path 'C:\Users\UserNa~1\AppData\Local\Temp\CSharpPSCmdLet201711132257130536.dll'.
VERBOSE: Importing cmdlet 'Test-Ploeh'.
this is a test
this is a test
change value
change value
NB: Beware, your value can be accessed / amended outside of your cmdlet: change value
I've changed my mind

{}大括号可以解决问题。这样做要好得多,因为它不会让测试代码的读者感到困惑。

答案 1 :(得分:16)

如何投掷一个已知的直接子类呢?

for v1.0

Direct Known Subclasses:
JsonGenerationException, JsonMappingException, JsonParseException

for v2.0

Direct Known Subclasses:
JsonGenerationException, JsonParseException

答案 2 :(得分:2)

这对我有用,它允许自己抛出JsonProcessingException

doThrow(JsonProcessingException.class).when(mockedObjectMapper).writeValueAsString(Mockito.any());

答案 3 :(得分:2)

我今天也遇到了这个问题。我想到的最简单,最干净的解决方案是创建并抛出一个模拟JsonProcessingException

when(mapper.writeValueAsString(any(Object.class)))
    .thenThrow(mock(JsonProcessingException.class));

答案 4 :(得分:0)

尝试使用thenAnswer并从JsonProcessingException创建一个匿名类

when(mapper.writeValueAsString(any(Object.class))).thenAnswer(x-> {throw new JsonProcessingException(""){};});

答案 5 :(得分:0)

今天遇到了同样的问题。您可以使用:

Mockito.when(mockObjectMapper.writeValueAsString(Mockito.any())).thenThrow(JsonProcessingException.class);