Unit testing 在Grails测试中重置id序列或更新id
在Grails1.3.7中,我有一个按ID过滤对象的代码,我需要对此进行测试 域类有一个序列Unit testing 在Grails测试中重置id序列或更新id,unit-testing,grails,Unit Testing,Grails,在Grails1.3.7中,我有一个按ID过滤对象的代码,我需要对此进行测试 域类有一个序列 static mapping = { id generator: 'sequence', params[sequence: 'seq_shipping_service'] } 在测试中,对象被创建了好几次,我需要在所有测试中标识符都是11,即使它在每个测试之间删除整个数据库,它也不会重置序列。所以我会得到一个更好的身份证 foo = createFoo() foo.id = 11l foo.save
static mapping = {
id generator: 'sequence', params[sequence: 'seq_shipping_service']
}
在测试中,对象被创建了好几次,我需要在所有测试中标识符都是11,即使它在每个测试之间删除整个数据库,它也不会重置序列。所以我会得到一个更好的身份证
foo = createFoo()
foo.id = 11l
foo.save () //This gets error
我的想法是
1) 以某种方式重置id序列,以便每次测试之间的编号相同
2) 以某种方式设置id
我不知道我个人是否清楚如果我需要这样做,我: 创建一个对象母对象以生成所有必需的对象(即foo.id==11) 使用GroovySQL将数据插入数据库。就你而言:
public class BlahBlahTest extends Specification {
DataSource dataSource
def setup () {
new Sql(dataSource).exec ("insert into blablah (11, ...)")
}
...
显然,您可以在那里执行任何其他操作—例如,重新创建序列以11开头。我将如何重新创建序列?在Oracle上-drop sequence seq;创建序列seq,从11开始;不确定是否有其他数据库。能否尝试在id`id generator:'assigned'的映射中设置此设置`