在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
我不知道自己是否清楚
答案 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开头的序列。