Mockito - 存根超级(抽象)类方法

时间:2014-06-12 09:55:00

标签: java junit mocking mockito

我有DAO代码,如下所示:

public abstract class GenericDAO <T, I> {
    public I upsert(T entity){
        //implementation
    }
}

public class MyEntityDAO extends GenericDAO <MyEntity, Integer> {
    public List<MyEntity> searchMyEntity(SearchParameters params){
        //domain specific entity search
    }
}

public class MyEntityService{
    private MyEntityDAO myEntityDAO;

    public Integer saveMyEntity(MyEntityVO vo){
        //transform vo to entity with business logic
        return myEntityDAO.upsert(myEntityInstance);
    }        

}

我想使用Mockito测试saveMyEntity()方法,但mockito向我显示错误消息 - &#34;当mockito类型中的(t)不适用于参数时(void)&#34;

这是代码:

Mockito.when(myEntityDAO.upsert(Matchers.any(MyEntity.class)))
        .thenReturn(1);

这是有效的代码:

Mockito.when(myEntityDAO.searchMyEntity(testSearchParams))
            .thenReturn(mockedListOfMyEntities);

似乎因为upsert()位于MyEntityDAO的超类中,而不是MyEntityDAO本身,这个问题即将出现。有什么办法可以实现吗?是否有任何解决方法或不同的框架支持此功能?

1 个答案:

答案 0 :(得分:0)

在评论中解决:

  

似乎问题是使用void更新方法..必须使用Answer修改传递的对象来测试功能。