单元测试嘲讽标准
问题描述:
我是新来的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
}"
答
Grails中2,你可以使用模拟()功能和mockDomain设置你的标准,
@TestFor(MyService)
@Mock(Individual)
然后你只需正常创建域类,你会。
http://grails.org/doc/latest/guide/single.html#unitTestingDomains
到Grails的2,你可以改变你的查询元类之前,像
Individual.metaClass.static.withCriteria = { [ i1, i2 ] }