2012-03-14 155 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 ] }