3
私のDAOのJunitテストを書いてみたいが、問題がある。mockitoを使用したクエリテストのパラメータ
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でパラメータを設定する最善の方法を教えてもらえますか?あなたはこのようなクエリインターフェイスのモックを作成することになっている
テストしようとしていますか?私は断言は見ませんでした。そしてあなたはあなたの質問をどこから得るのですか?クエリが嘲笑された場合は、NPEを取得すべきではありません。実際のクエリをテストする場合は、統合テストを作成します。通常、DAOを完全にセットアップしなければなりません。 – joostschouten