我有这样的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来修改传递的对象以测试功能。