2012-03-14 92 views
0

我是新来的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 
}" 

回答

1

Grails中2,你可以使用模拟()功能和mockDomain设置你的标准,

@TestFor(MyService) 
@Mock(Individual) 

然后你只需正常创建域类,你会。

http://grails.org/doc/latest/guide/single.html#unitTestingDomains

到Grails的2,你可以改变你的查询元类之前,像

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