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