2

私のコントローラーには、基準を使用してデータベースをヒットし、結果をフェッチするアクションがあります。

params.max = Math.min(params.max ? params.int('max') : 20, 100)    
def c = DomainObj.createCriteria()
    def result =[]
    result = c.list(params) {
        'eq'("employerid", id)
        }

テストケースでこの呼び出しを次のようにモックしました。

def result=[DomainObj1]         
            def mycriteria =[
                list: {Object params=null,Closure cls -> result}                    
                ]

DomainObj.metaClass.static.createCriteria = {mycriteria}

これまでのところ正常に動作します。

しかし、コントローラーには、コードが result.totalCount と言う行があります。ここで、結果は条件クエリの出力であり、PagedResultList タイプです。しかし、テストケースでは、結果をArrayListとしてモックしていますが、PagedResultListとしてはモックしていません。そのため、テスト ケースから実行すると、コードは result.totalCount で中断します。

arraylist の代わりに PagedResultList への基準応答をモックして、totalCount を持つようにする方法についてのアイデア

4

2 に答える 2

0

そのインターフェースを見てください。次のように構成できます

result = new PagedResultList(list: inctanceList, totalCount: inctanceList.size())
于 2012-07-31T06:28:06.173 に答える
0

Grails3 の場合、Groovy のtapクロージャーを使用できます。

PagedResultList<Foo> list = new PagedResultList<Foo>(null).tap {
    totalCount = 23
    resultList = [ foo1, foo2, foo3 ]
}
于 2020-04-01T18:44:50.117 に答える