有没有办法使用GORM在模拟域对象中设置ID

时间:2014-05-08 15:43:17

标签: unit-testing grails gorm spock

我有一个带有以下代码的控制器......

def myController(Command command){
   DomainObj obj = command.domain
   if(obj.id) update(obj)
   else createNew(obj)
   ....
}

现在我正在尝试创建我的测试但是当我做

@Mock(DomainObj)
...
  DomainObj obj = new DomainObj(id:123L)

但测试失败,因为未设置ID。我无法访问GORM项目,因此更改域类(I.E. hasId方法)不是一个可行的选择。有没有办法在单元测试中设置这个值?

2 个答案:

答案 0 :(得分:2)

即使IDE仍然显示为空

,也不要小心obj.metaClass.id = 123

答案 1 :(得分:0)

您也可以直接在对象中设置id,如下所示:

@Mock(DomainObj)
...
DomainObj obj = new DomainObj(id:123L)
obj.id = 123