2

Groovy でこの関数の値をテストするために、(JUnit による) 単体テストを作成したいと考えています。

    String getPeopleNamesById(int[] peopleIds) {
        List<String> names = People.createCriteria().list{
            projections { property("name") }
            'in' ("id", peopleIds)
        }
        return names ? names.join(", ") : "";
    }

ただし、次のステートメントを読み取ると、単体テストは常に失敗します: List names = People.createCriteria().list{...} groovy.lang.MissingMethodException: No signature of method: People.createCriteria() is applied for argument types: ()値: []。DB接続とクエリを実行する関数を呼び出すためだと思いますか?このテストを書くのを手伝ってくれませんか? どうもありがとう!

4

1 に答える 1

3

基準クエリは単体テストでは使用できず、によって提供されませんmockDomain。たとえば、を使用して基準クエリを自分でモックするかmockFor、完全なデータベース環境にアクセスできる統合テストをテストにすることができます。

クエリをモックする方法の例を次に示します。

mockFor(People).demand.static.createCriteria = { ->
    [list: { closure -> [ <some mock objects> ] } ]
}
于 2011-03-22T07:25:44.910 に答える