Java 当使用实对象返回null调用时,必须使用any()
当我使用mockJava 当使用实对象返回null调用时,必须使用any(),java,testing,mockito,Java,Testing,Mockito,当我使用mock@Service进行单元测试时,我注意到在Mockito.When()语句中,当我保存真实对象时,我得到null作为返回;我必须使用any() 因此,与其使用: @Mock private BinInfoService service; ... @Test public void testSave() { SomeBean bean = new SomeBean(); Mockito.when(service.saveBinInfo(bean).thenRet
@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
。而第二个表单返回保存的实体
为什么?
编辑:
对不起,实际上我没有像上面那样实例化对象。我用了另外两种方法。查看我的答案。来自
“Mockito以自然java风格验证参数值:使用equals()方法”
很可能您的bean没有实现equals方法,因此它返回null,因为默认实现下一个新bean与另一个bean不相等。
另一方面,matcher允许该类的任何bean,因此它总是返回值。From
“Mockito以自然java风格验证参数值:使用equals()方法”
很可能您的bean没有实现equals方法,因此它返回null,因为默认实现下一个新bean与另一个bean不相等。
另一方面,matcher允许该类的任何bean,因此它总是返回值。毕竟我刚刚找到了原因。对这个问题的描述有误导性,所以我必须注意 有两种情况
@注释。因此,在每次测试之前,它将被创建一次,因此内存地址也是不同的
毕竟我只是找到了原因。对这个问题的描述有误导性,所以我必须注意 有两种情况
@注释。因此,在每次测试之前,它将被创建一次,因此内存地址也是不同的
不能肯定。当我添加
equals()
和hashCode()
方法时,它仍然无法通过。您在实现该方法时是否检查了SomeBean的两个新实例是否相等?是的;断言的该部分通过。无法确认。当我添加equals()
和hashCode()
方法时,它仍然无法通过。您在实现该方法时是否检查了SomeBean的两个新实例是否相等?是的;断言的这一部分通过了。通常,“OP”指的是原始海报,而不是问题。你误导的说法看起来很奇怪,我可以建议将“问题”改为“我原以为是原创帖子。哈哈。通常,“OP”指的是原创海报而不是问题。你误导的说法看起来很奇怪,我可以建议将“问题”改为“我原以为是原创帖子”。哈哈。