我想,因爲我做了我的服務類的變化來更新我的測試。 在服務方法我加入(「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