我們有一個簡單的方法,可以獲取屬性等於硬編碼字符串的特定域對象的所有特定對象。此方法在MyDomainService中。Grails Criteria不能在集成測試中工作
def List<MyDomain> getAllDomain()
{
List resultList
def criteria = MyDomain.createCriteria()
resultList = criteria.list()
{
eq('property1', 'READY')
}
return resultList
}
我們也正在爲此方法編寫一個簡單的集成測試。測試如下。
void testGetAllDomain()
{
List original = MyDomain.list()
original.each{
it.property1 = 'NOTREADY'
it.save(flush:true)
}
def result = MyDomainService.getAllDomain()
assertEquals 0, result.size() //All objects should be set to NOTREADY, and not retrieved. THIS is failing.
}
我已經嘗試設置
def transactional = false
,留下我的代碼不變。我嘗試將事務設置爲false,並將代碼封裝在.withTransaction {}中。我也嘗試了標準配置,並沒有奏效。我注意到的是,如果我做
def List<MyDomain> getAllDomain()
{
List original = MyDomain.list()
original.each{
it.property1 = 'NOTREADY'
it.save(flush:true)
}
List resultList
def criteria = MyDomain.createCriteria()
resultList = criteria.list()
{
eq('property1', 'READY')
}
return resultList
}
然後結果如預期地回來。這使我相信它與集成測試中的事務有關。有任何想法嗎?
你並不十分清楚結果會如何迴歸。 –