我在嘲笑这句台词:
ResponseEntity<String> response= gatewayOutWrapper.wrap_2P_OneWay(GatewayOut::getConnectionType, wit, serialNumber, metaData);
带有when(gatewayOutWrapper.wrap_2P_OneWay(GatewayOut::getConnectionType, any(), any(), any())).thenReturn(ResponseEntity.ok().body(responseBody));
但是我不知道如何模拟方法引用。我尝试了一些真实的值,但是在那一行运行测试时总是得到null,所以这是当不触发时。
有人能帮忙吗?
1条答案
按热度按时间juzqafwq1#
直接的答案是
any()
应该可以很好地工作,正如Lesiak在注解中提到的,Java将方法引用表示为implementations of single-method interfaces,any
可以很好地模拟这些接口。您可能已经找到other Mockito pitfalls:
any
这样的匹配器,你必须确保所有的参数都使用匹配器。在any()
这样的匹配器旁边传递一个实数值,包括你的方法引用,是不允许的。eq
是默认的,所以你可以用它来 Package 。gatewayOutWrapper
的类是final
,你需要选择最终的mock支持,否则null
的值(any()
等匹配器返回的值)将进入一个真实的的实现。这在Mockito 2.1+中是支持的,但它仍然不是Mockito 5的默认行为。gatewayOutWrapper
是一个spy或者它调用真实的的方法,那么也可能会得到一个空指针异常;解决方案是使用doReturn
,如下所示: