2011-01-12 71 views
0

我希望得到關於體系結構問題的專家解釋。想象一下Spring MVC webapp,帶有驗證API(JSR 303)。因此,對於請求,我有一個處理請求的控制器,然後將它傳遞給服務層,該層傳遞給DAO服務層。N層體系結構和單元測試(使用Java)

這是我的問題。驗證發生在哪一層,以及如何進行驗證?

雖然我的控制器必須處理基本驗證(必填字段爲空嗎?字段長度是否正確?等等)。然後服務層可以做一些比較常用的東西,涉及其他的東西。 DAO根本沒有驗證。但是,如果我想實現一些單元測試(即服務下面的測試層,而不是控制器),那麼最終會出現意外的行爲,因爲一些驗證應該在Controller層完成。由於我們不使用它進行單元測試,所以存在一個問題。

處理這個問題的最佳方法是什麼?我知道沒有普遍的答案,但您的個人經歷非常受歡迎。

非常感謝。 此致敬禮。

回答

3

在您的服務單元測試中,製作您的測試數據就好像它通過了所有控制器級別的驗證檢查一樣 - 本質上假設控制器級別驗證將完美工作,並且您的服務將只接收從控制器角度來看有效的數據。然後,在控制器的單元測試中測試每個驗證案例。最後,包括集成測試,這兩種測試都無法通過驗證,並確保無法通過。