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でパラメーターを設定する最良の方法を誰かに教えてもらえますか?