0

当我意识到我无法访问存储在数据库中的值时,我正在使用多个异步 GORM 调用在 Grails 3.3 中编写集成测试。我编写了以下测试以了解发生了什么。

   void "test something"() {
        given:
        def instance = new ExampleDomain(aStringField: "testval").save(flush:true)

        when:
        def promise = ExampleDomain.async.task {
            ExampleDomain.get(instance.id).aStringField
        }

       then:
       promise.get() == "testval"

    }

我的域类

class ExampleDomain implements AsyncEntity<ExampleDomain> {

    String aStringField

    static constraints = {}
}

build.gradle 配置

compile "org.grails:grails-datastore-gorm-async:6.1.6.RELEASE"

知道出了什么问题吗?我期望在执行异步调用期间能够访问数据存储。

4

1 回答 1

0

给定的块很可能在尚未提交的事务中。没有看到完整的测试类是不可能知道的,但是很可能你有@Rollback注释。

解决方法是删除注释并将用于保存域的逻辑放在单独的事务方法中。然后,您将负责清理所有插入的数据。

于 2017-08-10T14:21:15.970 回答