我有简单的问题
在集成测试期间,GORM挂钩方法( beforeUpdate , afterLoad 等)是否正常工作?他们被评估了吗?
我有集成测试(我的测试类扩展了 GroovyTestCase ),我可以看到我在域对象上的 afterLoad 方法中所做的更改似乎不起作用(域对象在加载后保持不变),当我手动测试它(运行我的应用程序)时,它可以工作(域对象已成功更改)。此外,在集成测试期间,我无法从钩子方法中看到任何日志或打印到控制台。
这是预期的行为还是我遗失了什么?
这是一些代码: 我有PackageState域对象,其中包含字段accountID(整数)。 在PackageState中,我有 afterLoad hook:
def afterLoad() {
this.accountID = 33333
}
我的测试套件看起来像这样:
void "test3"() {
PackageState packageState1 = PackageState.findByAccountID(11111)
assertEquals(33333, packageState1.accountID)
}
消息是: junit.framework.AssertionFailedError:expected:< 33333>但是:< 11111>
在我看来,没有调用钩子:/ ...
谢谢, 伊万
答案 0 :(得分:3)
您可以通过withNewSession
围绕动态方法(或任何其他GORM方法)集成测试这些事件挂钩:
class PackageStateSpec extends IntegrationSpec {
PackageState packageState1
void "test something"() {
given:
PackageState.withNewSession{
packageState1 = PackageState.findByAccountID(11111)
}
expect:
packageState1.accountID == 33333
}
}
每次从集成测试进行测试时,事件都将在新会话中注册。