域类层次结构中namedQuery的Grails 2.0单元测试问题

域类层次结构中namedQuery的Grails 2.0单元测试问题,grails,Grails,Grails2.0- 在对使用命名查询的控制器进行单元测试时,我遇到“在BaseDomain上找不到属性(subdomain1property)”错误。应用程序运行正常并返回正确的结果,但单元测试失败 class BaseDomain { static namedQueries = { listDuplicates {instance -> if(instance instanceof SubDomain1) { eq(

Grails2.0- 在对使用命名查询的控制器进行单元测试时,我遇到“在BaseDomain上找不到属性(subdomain1property)”错误。应用程序运行正常并返回正确的结果,但单元测试失败

class BaseDomain {
    static namedQueries = {
        listDuplicates {instance ->
           if(instance instanceof SubDomain1) {
            eq('subdomain1property', instance.subdomain1property)
           }
        }
    }
}

class SubDomain1 extends BaseDomain {
  String subdomain1property
}
控制器的单元测试已完成

@Mock([BaseDomain, SubDomain1])
控制器有这条线

BaseDomain.listDuplicates(instance)

将特定测试用例从单元转移到集成测试,从而解决了问题。如果我在单元测试中找到模拟多态性的方法,我将更新答案。

您试图在超类中使用subclass属性。BaseDomain没有访问权限。为什么不在SubDomain1中创建此namedQuery?我有SubDomain1、SubDomain2、SubDomain3子类从BaseDomain扩展而来。我不想对每个子类重复此查询。为简洁起见,问题中未列出此查询中所有子类共有的其他属性。顺便说一下,应用程序运行良好,并返回子域1、子域2、子域3的正确结果。失败的是单元测试。我想一定有一些嘲弄可以修复我的单元测试