CreateCriteria()ステートメントを持つ関数で単位テストを実行できません

StackOverflow https://stackoverflow.com/questions/5386479

質問

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> ] } ]
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top