gpt4 book ai didi

java - Mockito、验证和 HashMap : Argument(s) are different

转载 作者:行者123 更新时间:2023-12-01 18:12:27 29 4
gpt4 key购买 nike

使用 Mockito 编写这样的测试 verify :

verify(myClass, times(1)).myMethod("string_param", ObjectUtil.map("map_param_1", "value", "map_param_2", "10"))

( ObjectUtil.map 是一个返回 LinkedHashMap<String, Object> 的 util 方法)

我收到此错误:

Argument(s) are different! Wanted: myClass.myMethod( "string_param", (LinkedHashMap) {map_param_1=value, map_param_2=10} ); -> at ...

Actual invocation has different arguments: myClass.myMethod( "string_param", (HashMap) {map_param_1=value, map_param_2=10} );

查看错误,我会说等于失败,因为一侧有 LinkedHashMap另一个是HashMap ,但是改变类型并不能解决问题,而且参数看起来一模一样,可能是什么?

最佳答案

我浪费了几个小时后解决了,我认为 Mockito 的这种行为有点棘手。

问题是由于 map 值的类型不匹配造成的,在测试中我将“10”作为字符串传递给“map_param_2”,而在对该方法的实际调用中,参数是作为简单的 int 传递,但查看消息无法理解其中的差异,因为两者都写有 map_param_2=10

在爬了一些镜子后,我使用 Mockito 的 argThat 写下了一个自定义匹配器,并循环了 map 的参数,我注意到它们是不同的类型。

关于java - Mockito、验证和 HashMap : Argument(s) are different,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60441460/

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