gpt4 book ai didi

java - 为什么我尝试模拟 @Spy ObjectMapper 会导致 NPE?

转载 作者:行者123 更新时间:2023-12-01 09:07:47 24 4
gpt4 key购买 nike

我有以下声明:

@Spy ObjectMapper mapper = new ObjectMapper();

对于我的大多数测试,这都按预期工作,mapper 的行为按照其默认值。在我的一项测试中,我模拟了 ObjectMapper::writeValueAsBytes 并且效果也很好。但以下失败:

when(mapper.readValue(any(byte[].class), eq(ProfileCacheReply.class)))
.thenThrow(IOException.class);

但以下情况除外:

java.lang.NullPointerException
at com.fasterxml.jackson.core.JsonFactory.createParser(JsonFactory.java:839)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2807)
at com.org.loaders.ProfileCacheLoaderTest.sendRequestThrewExceptionDeserializingProfileCacheResponse(ProfileCacheLoaderTest.java:174)

我看到在 readValue 方法中,实际上调用了 JsonFactory::createParser,但不应该 @Spy 处理这个问题求助于ObjectMapper的默认行为?此外,既然我删除了这个方法,为什么它实际上关心原始实现?

编辑:

这就是该方法在测试类中的使用方式,但是请注意,我实际上并没有在测试中调用该方法!当我尝试使用 when()

设置模拟时发生异常
try {
profileCacheReply = mapper.readValue(responseByteString.toByteArray(), ProfileCacheReply.class);
} catch (IOException e) {
throw new RuntimeException("Failed to deserialize ProfileCacheReply", e);
}

最佳答案

我希望这能回答您的疑问:http://www.stevenschwenke.de/spyingWithMockito 。如果您对解决方案感到满意,那么您可以接受答案:)

关于java - 为什么我尝试模拟 @Spy ObjectMapper 会导致 NPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125318/

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