在Grails Test上重置id序列或更新id

时间:2015-06-08 02:33:29

标签: unit-testing grails

在Grails 1.3.7中,我有一个按ID过滤对象的代码,我需要测试

域类有一个序列

static mapping = {
id generator: 'sequence', params[sequence: 'seq_shipping_service']
}

在测试中,对象被创建了几次,我需要在所有测试中标识符为11,即使它在每次测试之间删除整个数据库,它也不会重置序列。所以我会得到一个优秀的ID

foo = createFoo()
foo.id = 11l
foo.save () //This gets error

我的想法是 1)以某种方式重置id序列,以便每次测试之间都有相同的数字 2)以某种方式设置id

我不知道自己是否清楚

1 个答案:

答案 0 :(得分:0)

就个人而言,如果我需要做这样的事情,我:

创建一个对象母,以产生所有必需的对象(即foo.id == 11)

使用Groovy SQL将数据插入数据库。在你的情况下:

public class BlahBlahTest extends Specification {
   DataSource dataSource

   def setup () {
      new Sql(dataSource).exec ("insert into blablah (11, ...)")
   }
...

显然你可以在那里做任何其他事情 - 例如重新创建以11开头的序列。