gpt4 book ai didi

java - 如何对 Stream.reduce 方法进行单元测试

转载 作者:行者123 更新时间:2023-12-01 19:34:03 24 4
gpt4 key购买 nike

我需要对reduce()方法进行单元测试。不知道为什么它会抛出 NullPointerException,尽管我可以看到该对象不为 null。

请引用以下代码。

  Mock:-
when(mergeUtility.mergeJson(josnObj1, jsonObj2)).thenReturn( new
JsonParser().parse(MergeConstant.mergedJsonObject).getAsJsonObject());

实际方法:

Optional<JsonObject> aggregatedJson = 
jsonList.stream().reduce(mergeUtility :: mergeJson);

当我测试 jsonList 必须对象时,仍然从 reduce() 方法抛出 NullPointerException 。有人可以告诉我原因吗?

最佳答案

尝试下面的代码:-

 when(mergeUtility.mergeJson(Mockito.any(), Mockito.any())).thenReturn( new
JsonParser().parse(MergeConstant.mergedJsonObject).getAsJsonObject());

其背后的原因是虽然您正在 mock 该方法,但您正在发送参数为josnObj1, jsonObj2这与执行测试用例时由 jsonList 生成的对象不同,因此当您对列表和 josnObj1, jsonObj2 生成的项目执行 equals 操作时它们不匹配。由于对象不匹配,方法调用与您模拟的对象不匹配,因此不会执行模拟。

而当您使用 Mockito.any() 时无论赋予该方法的参数如何,它都会模拟该方法,即使它们不匹配。

关于java - 如何对 Stream.reduce 方法进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58481994/

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