0

驗證grails域類與數據庫同步的最佳方式是什麼?這是遺留數據庫,我不能從域類構建它。一個有趣的想法here這意味着獲取每個域的一行。但是,它並不是一個完整的解決方案,主要是因爲我驗證的測試數據庫可能不是如此豐富的數據以至於在所有表中都有數據。針對數據庫驗證grails域類

提前感謝您花時間閱讀/回覆。

回答

1

這是一個不錯的方法,即使對於空表也是如此 - 如果一個表爲空,那麼就沒有遺留數據來擔心驗證了,對嗎?或者,如果您想測試Grails約束與數據庫約束的兼容性,請創建該類的新實例並嘗試在事務中使用save(),並始終將事務重新展開。

如果數據庫是小,我甚至去從list()刪除max:1 - 驗證紀錄,因爲只有一些記錄可能違反限制。我也想用assert it.validate()代替println "${it}"

最後一個優化,我會限制只測試那些我知道可以違反一些約束的類。這將節省很多這樣的測試 - 並且測試將花費大量時間,您知道 - 用GORM開銷讀取所有數據庫。

+0

保存n'回滾方法聽起來不錯,但它不是通用的,因爲我必須編寫代碼來保存每個域及其關聯。不是嗎?這意味着每次模型更改/增長時都必須修改驗證代碼。 – sul 2011-06-13 22:47:26

+0

您可以爲每個字段生成一些隨機垃圾 - 您可以枚舉類「屬性」或「constrainedProperties」。 – 2011-06-14 09:12:43