我有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本身,这个问题即将出现。有什么办法可以实现吗?是否有任何解决方法或不同的框架支持此功能?
答案 0 :(得分:0)
在评论中解决:
似乎问题是使用void更新方法..必须使用Answer修改传递的对象来测试功能。