GORM钩子方法在Grails集成测试中有效吗

GORM钩子方法在Grails集成测试中有效吗,grails,gorm,integration-testing,Grails,Gorm,Integration Testing,我有一个简单的问题 GORM挂钩方法(更新前,后加载等)是否在集成测试期间有效?是否对其进行了评估 我有集成测试(我的测试类扩展了GroovyTestCase),我可以看到我在域对象上的afterLoad方法中所做的更改似乎不起作用(加载后域对象保持不变),当我手动测试它(运行我的应用程序)时,它起作用(域对象成功更改)。在集成测试期间,我也看不到从钩子方法到控制台的任何日志或打印 这是预期的行为还是我遗漏了什么 下面是一些代码: 我有一个PackageState域对象,它具有字段account

我有一个简单的问题

GORM挂钩方法(更新前后加载等)是否在集成测试期间有效?是否对其进行了评估

我有集成测试(我的测试类扩展了GroovyTestCase),我可以看到我在域对象上的afterLoad方法中所做的更改似乎不起作用(加载后域对象保持不变),当我手动测试它(运行我的应用程序)时,它起作用(域对象成功更改)。在集成测试期间,我也看不到从钩子方法到控制台的任何日志或打印

这是预期的行为还是我遗漏了什么

下面是一些代码: 我有一个PackageState域对象,它具有字段accountID(整数)。 在PackageState中,我有后装载挂钩:

def afterLoad() {
        this.accountID = 33333
    }
我的测试套件如下所示:

void "test3"() {
        PackageState packageState1 = PackageState.findByAccountID(11111)
        assertEquals(33333, packageState1.accountID)
    }
信息是: junit.framework.AssertionFailedError:应为:但为:

所以在我看来,钩子不叫:/

谢谢,
Ivan

您可以通过以下方式围绕动态方法(或任何其他GORM方法)对这些事件挂钩进行集成测试:

class PackageStateSpec extends IntegrationSpec {
    PackageState packageState1

    void "test something"() {
        given:
            PackageState.withNewSession{
                packageState1 = PackageState.findByAccountID(11111)
            }

        expect:
            packageState1.accountID == 33333
    }
}
每次从集成测试中测试时,事件都将注册到新会话