Grails 标准的单元测试模拟

Grails 标准的单元测试模拟,grails,grails-domain-class,Grails,Grails Domain Class,我是grails新手,尝试为服务类编写单元测试时使用了方法,它调用域对象上的条件 如何在服务类的以下方法中模拟域行为 {def checkForDuplicates(firstName, lastName, gender, birthDate, accountId){ def duplicateIndividual = Individual.withCriteria{ eq('firstName',firstName) eq('lastName',l

我是grails新手,尝试为服务类编写单元测试时使用了方法,它调用域对象上的条件

如何在服务类的以下方法中模拟域行为

{def checkForDuplicates(firstName, lastName, gender, birthDate, accountId){
 def duplicateIndividual = Individual.withCriteria{
           eq('firstName',firstName)
           eq('lastName',lastName)
           eq('gender',gender)
           eq('birthDate',birthDate)
           and{
               accounts{
                   eq('id', accountId)
               }
           }
    }

    if(duplicateIndividual){
        log.error("Found duplicate for ${duplicateIndividual.firstName}
      ${duplicateIndividual.lastName}")
        return true
    }
    return false
}"

在Grails2中,您可以使用Mock()功能和mockDomain设置您的条件

@TestFor(MyService)
@Mock(Individual)
然后,您只需按照正常方式创建域类

在Grails2之前,您可以更改查询的元类,如

Individual.metaClass.static.withCriteria = { [ i1, i2 ] }