Grails ...返回PagedResultList的模拟标准

时间:2012-07-30 17:11:31

标签: java hibernate grails junit criteria

在我的控制器中,我有一个操作,它使用条件来命中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类型。 但在测试用例中,我将结果模拟为arrayList,而不是像PagedResultList那样。因此,如果从测试用例运行,则在result.totalCount处断码。

我是否可以模拟对PagedResultList而不是arraylist的标准响应,以便它具有totalCount

2 个答案:

答案 0 :(得分:0)

看看its interface。您可以像

一样撰写
result = new PagedResultList(list: inctanceList, totalCount: inctanceList.size())

答案 1 :(得分:0)

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

PagedResultList<Foo> list = new PagedResultList<Foo>(null).tap {
    totalCount = 23
    resultList = [ foo1, foo2, foo3 ]
}