Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 在Grails测试中重置id序列或更新id_Unit Testing_Grails - Fatal编程技术网

Unit testing 在Grails测试中重置id序列或更新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

在Grails1.3.7中,我有一个按ID过滤对象的代码,我需要对此进行测试

域类有一个序列

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'的映射中设置此设置`