如何在grails中模拟命名查询?

如何在grails中模拟命名查询?,grails,groovy,mocking,Grails,Groovy,Mocking,我在Grails2.1.0中遇到了以下问题。我有一个名为query的域。此命名查询的结果在服务中调用list()方法: List result=Domain.namedQuery(someParams.List() 所以,我希望在我的服务的单元测试中得到模拟结果。有什么办法吗?我相信您可以通过修改元类来实现。只需确保@Mock类也可以,这样您就不会受到测试污染: Domain.static.metaclass.namedQuery = { someParams -> // Asse

我在Grails2.1.0中遇到了以下问题。我有一个名为query的域。此命名查询的结果在服务中调用list()方法:

List result=Domain.namedQuery(someParams.List()


所以,我希望在我的服务的单元测试中得到模拟结果。有什么办法吗?

我相信您可以通过修改元类来实现。只需确保
@Mock
类也可以,这样您就不会受到测试污染:

Domain.static.metaclass.namedQuery = { someParams ->
    // Assert and return data
}

还要确保与参数的类型和数量完全匹配,否则可能无法工作

我试过了。这对我不起作用。。。我应该使用哪种报税表?当我尝试返回域类的
List
,然后对其调用
List()
,它会返回空列表。@ddd我想您需要一个PagedResultList。我认为列表本身没有名为List()的方法。