Grails…返回PagedResultList的模拟条件

问题描述 投票:2回答:2

在我的控制器中,我有一个使用条件来达到db并获取结果的动作。

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,其中result是条件查询的输出,并且是PagedResultList类型。但是在测试用例中,iam将结果模拟为arrayList,而不是PagedResultList。因此,如果从测试用例运行,代码将在result.totalCount处中断。

关于如何模拟对PagedResultList而不是arraylist的条件响应的任何想法,以便它具有totalCount

java hibernate grails junit criteria
2个回答
0
投票

看看its interface。您可以像

那样组成
result = new PagedResultList(list: inctanceList, totalCount: inctanceList.size())

0
投票

对于Grails3,您可以使用Groovy的tap闭包:

tap
© www.soinside.com 2019 - 2024. All rights reserved.