首页 > 解决方案 > 实际上与这个模拟错误的交互为零?

问题描述

我正在尝试编写测试用例,但遇到了这个错误。如何解决此错误?

@Override
    public boolean isDuplicateSystemDetail(SystemFormBean systemFormBean){
        List<BrmSystem> list = systemDao.isDuplicateSystemDetail(systemFormBean);
        if(CollectionUtils.isNotEmpty(list)){
            return true;
        }else{
            return false;
        }
    }
---------------------------------------------------------------------------
@Test
    public void isDuplicateSystemDetail_Should_Return_True(){
        List<BrmSystem> list = new ArrayList<BrmSystem>();
        BrmSystem brmSystem = new BrmSystem();
        SystemFormBean systemFormBean = new SystemFormBean();
        brmSystem.setSystemName("Test");
        list.add(brmSystem);
        when(systemDao.isDuplicateSystemDetail(systemFormBean)).thenReturn(list);
    }

标签: junitmocking

解决方案


可能 SystemFormBean 类不会覆盖 equals()。因此,当 isDuplicateSystemDetail(systemFormBean) 调用时,它具有该类的另一个对象作为参数,该参数与您手动创建的参数不同(默认情况下 Object.equals() 比较内存地址,在您的情况下为假) .

尝试覆盖 equals() 以通过 SystemFormBean 的 fe 实际字段进行比较或将“when”子句重写为
systemDao.isDuplicateSystemDetail(Mockito.any(SystemFormBean.class))


推荐阅读