gpt4 book ai didi

java - Mockito.当用真实对象调用返回null时,必须使用any()

转载 作者:行者123 更新时间:2023-11-28 21:07:33 25 4
gpt4 key购买 nike

当我使用模拟 @Service 进行单元测试时,我注意到在 Mockito.when() 语句中,当我保存真实对象时,我得到了 null 作为返回;我必须使用 any()

所以,而不是使用:

@Mock
private BinInfoService service;
...
@Test
public void testSave() {
SomeBean bean = new SomeBean();
Mockito.when(service.saveBinInfo(bean).thenReturn(bean);
}

我必须使用:

Mockito.when(service.saveBinInfo(Mockito.any(SomeBean.class))).thenReturn(bean);

第一种形式返回null。而第二种形式返回保存的实体。

为什么?

编辑:

抱歉,实际上我没有像上面那样实例化对象。我用了另外两种方式。看我的回答。

最佳答案

来自 https://static.javadoc.io/org.mockito/mockito-core/2.22.0/org/mockito/Mockito.html#argument_matchers

"Mockito verifies argument values in natural java style: by using an equals() method"

可能您的 bean 没有实现 equals 方法,因此它返回 null,因为默认实现中新 bean 不等于另一个 bean。另一方面,匹配器允许该类的任何 bean,因此它总是返回值。

关于java - Mockito.当用真实对象调用返回null时,必须使用any(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52316969/

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