在spock功能测试中使用GORM在db中插入数据

时间:2014-07-27 19:43:27

标签: grails gorm spock

我想使用GORM在用spock编写的功能测试中设置测试数据。由于我不想模仿行为,我得到了一个例外

java.lang.IllegalStateException: Method on class [com.test.Person] 
was used outside of a Grails application. If running in the context of a 
test using the mocking API or bootstrap Grails correctly.

有没有办法以这种方式使用GORM?我已经看过remoteControl插件,但是我不想使用它和AFAIK我应该在同一个JVM中,因为我在没有--war开关的情况下开始测试。

1 个答案:

答案 0 :(得分:0)

自从2.3分叉执行默认启用(包括run-app,test-app,run-war,console)。因此,如果启用了分叉执行,则必须查看BuildConfig.groovy(有关详细信息,请参阅docs)。你必须禁用它,但你也会失去其他一些积极的方面。你唯一真正的选择是使用remote-control plugin和一些这样的结构(远程控制插件docs中的例子:

def remote = new RemoteControl()

def testIt() {
    def id = remote {
        def person = new Person(name: "Me")
        person.save()
        person.id
    }

    // Somehow make some HTTP request and test that person is in the DB

    remote {
        Person.get(id).delete()
    }
}