我们有一个简单的方法,可以获取属性等于硬编码字符串的特定域对象的所有特定对象。此方法在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
}
然后结果如预期地回来。这使我相信它与集成测试中的事务有关。有任何想法吗?
你并不十分清楚结果会如何回归。 –