【问题标题】:Grails GORM Service class Testing withNewSession()Grails GORM 服务类测试 withNewSession()
【发布时间】:2013-02-03 05:37:25
【问题描述】:

我正在尝试更新我的测试,因为我对我的服务类进行了更改。 在我添加的服务方法中(“withNewSession”)

Domain.withNewSession {
  .. ...
  domain.save()
}

由于我使用的是“withNewSession”,因此在我的测试类中模拟了这个域,因此我得到了方法丢失异常。

【问题讨论】:

    标签: hibernate grails grails-orm integration-testing


    【解决方案1】:

    单元测试不允许使用withNewSession 方法。在您的测试类中使用:

    @org.junit.Before
    void before() {
        DomainClazz.metaClass.static.withNewSession = {Closure c -> c.call() }
    }
    

    【讨论】:

    • 这解决了我的问题。喜欢 Groovy 的元编程功能 :)
    【解决方案2】:

    您应该使用集成测试而不是单元测试来测试持久性。仅在测试依赖于域类的控制器或其他类但域类不是被测类时才使用域类模拟。

    【讨论】:

    • 服务方法做了一些业务逻辑,我正在尝试测试它。我必须在逻辑周围添加 Domain.withNewSession 的原因是因为我在多线程场景中运行该方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多