我想,因为我做了我的服务类的变化来更新我的测试。 在服务方法我加入(“withNewSession”)的Grails GORM服务类测试withNewSession()
Domain.withNewSession {
.. ...
domain.save()
}
由于我使用的是“withNewSession”,我越来越缺少方法异常,因为这个域名是在我的测试类嘲笑。
我想,因为我做了我的服务类的变化来更新我的测试。 在服务方法我加入(“withNewSession”)的Grails GORM服务类测试withNewSession()
Domain.withNewSession {
.. ...
domain.save()
}
由于我使用的是“withNewSession”,我越来越缺少方法异常,因为这个域名是在我的测试类嘲笑。
withNewSession方法不受单元测试允许的。在您的测试类中使用:
@org.junit.Before
void before() {
DomainClazz.metaClass.static.withNewSession = {Closure c -> c.call() }
}
你应该集成测试,而不是单元测试测试持久性。使用域类只测试控制器或依赖于域类其他类时嘲讽,但其中域类不是被测试的类。
服务方法执行一些业务逻辑,我试图测试它。我不得不添加Domain.withNewSession周围的逻辑的原因是因为我运行多个线程情况下的方法。 – bond
这解决了我的问题。喜欢Groovy的元编程功能:) – bond