CreateCriteria()ステートメントを持つ関数で単位テストを実行できません
-
28-10-2019 - |
質問
Groovyでこの関数の値をテストするために(Junitによる)ユニットテストを書きたいです。
String getPeopleNamesById(int[] peopleIds) {
List<String> names = People.createCriteria().list{
projections { property("name") }
'in' ("id", peopleIds)
}
return names ? names.join(", ") : "";
}
ただし、このステートメントを読むときは常に単位テストが失敗します。リスト= people.createcriteria()。リスト{...} groovy.lang.missingmethodexception:方法の署名なし:people.createcriteraia()は引数タイプに適用されます:()値:[]。いくつかのDB接続とクエリを実行する機能を呼び出すことのためにそれは推測しますか?このテストを書くのを手伝ってもらえますか?どうもありがとう!
解決
基準クエリはユニットテストでは利用できず、によって提供されていません mockDomain
. 。あなたはあなたの基準をock笑することができます、例えば mockFor
, 、または、完全なデータベース環境にアクセスできる統合テストをテストします。
これがあなたのクエリをock笑する方法の例です:
mockFor(People).demand.static.createCriteria = { ->
[list: { closure -> [ <some mock objects> ] } ]
}
所属していません StackOverflow