私のコントローラーには、基準を使用してデータベースをヒットし、結果をフェッチするアクションがあります。
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 を持つようにする方法についてのアイデア