Mockito - stub超(抽象)类方法



我有这样的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显示了一个错误消息-"当(t)在Mockito类型中的方法不适用于参数(void)"。

这是代码:

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

下面是有效的代码:

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

似乎因为upsert()是在MyEntityDAO的超类中,而不是在MyEntityDAO本身中,所以这个问题出现了。我有什么办法可以做到这一点吗?是否有任何解决方案或支持此功能的不同框架?

在注释中解析:

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

相关内容

  • 没有找到相关文章

最新更新