我想为我的 dao 写一个 Junit 测试,但是我有一个问题。这是我要测试的方法:
public boolean boo(final String param) {
final Query query = this.entityManager.createNamedQuery("queryName");
query.setParameter(1, param);
boolean isExists = false;
if(query.getResultList().size() != 0) {
isExists = true;
}
return isExists;
}
这种方法的问题是:
query.setParameter(1, param);
当我写类似的东西时:
@Test
public void test() {
when(entityManager.createNamedQuery(queryName)).thenReturn(query);
when(query.getResultList()).thenReturn(new ArrayList());
//when(query.setParameter(1,project.getName())).thenCallRealMethod();
projectDao.boo(name);
}
查询和 entityManager 是模拟的。我有 NPE,这并不奇怪,我无法调用该方法,因为查询是和接口。那么有人可以告诉我在测试时在 NamedQueries 中设置参数的最佳方法吗?