Grails hibernate事件在集成测试期间不会触发
在grails运行期间,应用程序hibernate事件会定期触发,不会出现问题。但是,在每个集成测试用例期间,不会触发这些相同的事件。下面是我的代码精髓,简化为最简单的形式。hibernate是否在集成测试期间使用?是否可以采用不同的测试方法?欢迎提出建议或意见 集成测试Grails hibernate事件在集成测试期间不会触发,hibernate,grails,integration-testing,gorm,Hibernate,Grails,Integration Testing,Gorm,在grails运行期间,应用程序hibernate事件会定期触发,不会出现问题。但是,在每个集成测试用例期间,不会触发这些相同的事件。下面是我的代码精髓,简化为最简单的形式。hibernate是否在集成测试期间使用?是否可以采用不同的测试方法?欢迎提出建议或意见 集成测试 @Mock ([User]) class SomeIntegrationTests { @Test void testSomething () {
@Mock ([User])
class SomeIntegrationTests {
@Test
void testSomething () {
new User().save(flush: true)
}
}
控制器
class Controller implements SaveOrUpdateEventListener {
public void onSaveOrUpdate(SaveOrUpdateEvent event) throws HibernateException {
print 'event fired'
}
}
资源.groovy
beans = { service(MyService)
hibernateEventListeners(HibernateEventListeners) {
listenerMap=['save-update' : service, 'delete' : service]
}
}
您正在模拟您的
用户
域类。模拟域类时,不使用hibernate。如果删除@Mock([User])
将使用真正的域对象,包括hibernate。Ah。现在,作为一个后续问题,当@Mock注释被删除时,grails似乎无法调用动态查找器(不包括在我上面的示例中)。有没有一种方法可以在没有mock标记的情况下使用make User.findAll()调用?如果测试位于test/integration
子目录中,则动态查找程序应该可以工作。这是grails用来表示测试需要整个spring/hibernate堆栈的约定。