Java 如何为Junit测试模拟executeNamedQuery(查询,参数)
@存储库 公共类DAOImpl扩展了GenericDaoImpl实现了SomeDAO{Java 如何为Junit测试模拟executeNamedQuery(查询,参数),java,jpa,junit,entitymanager,hibernate-generic-dao,Java,Jpa,Junit,Entitymanager,Hibernate Generic Dao,@存储库 公共类DAOImpl扩展了GenericDaoImpl实现了SomeDAO{ @Autowired EntityManager em; @Override public List<PropertyURL> getProperties(String env) throws Exception{ List<String> inParam = new ArrayList<>(); inParam.add(env); Map<
@Autowired
EntityManager em;
@Override
public List<PropertyURL> getProperties(String env) throws Exception{
List<String> inParam = new ArrayList<>();
inParam.add(env);
Map<String, Object> params = new HashMap<>();
params.put(ProEnum.ENV.getProperty(), inParam);
List<PropertyURL> URL = null;
String query = "PropertyURL.getProperty";
URL = executeNamedQuery(query, params);
return URL;
}
@Autowired
实体管理器;
@凌驾
公共列表getProperties(字符串环境)引发异常{
List inParam=new ArrayList();
inParam.add(环境);
Map params=新的HashMap();
参数put(ProEnum.ENV.getProperty(),inParam);
列表URL=null;
String query=“PropertyURL.getProperty”;
URL=executeNamedQuery(查询,参数);
返回URL;
}
如何模拟executeNamedQuery(query,params)调用并返回一些东西,例如:Mockito.when(entityManagerMock.merge(Mockito.any())。然后返回(someObject)在尝试模拟
EntityManager
之前,我会问自己,使用集成测试直接测试与JPA交互的组件是否更好。如果模拟executeNamedQuery
并只运行单元测试,您将如何验证查询是否有效?我们有集成测试和单元测试,但是对于单元测试,我们需要覆盖整个方法,以查看流程是否按照预期进行。