2010-12-23 24 views
0

我正在使用linq在我的項目上使用nhibernate,並且正在使用Mock和SQLLite編寫單元測試。 使用流利的nhibernate將域對象映射到sql視圖。我如何使用SQLite單元測試sql視圖

問題是,這個域對象使用sql視圖有源,而這個視圖有很多表的數據,只有MsSQL知道這一點。我不知道如何去模擬這個。

如何使用Mock和SQLite單元測試sql視圖?

»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»

編輯:

對不起,我的問題沒有得到不太清楚。讓我重新修飾它。

我正在使用nhibernate,並使用SQLLite編寫單元測試。 在某些情況下,我的域對象被映射到視圖而不是表,因此我配置了流暢的nhibernate映射,以便在SQLite數據庫模式中不生成相應的表。

這適用於開發環境,因爲視圖是在MsSQL數據庫中手動創建的,但是我無法在單元測試中測試相應的存儲庫,因爲它們使用SQLite。

如何使用SQLite單元測試sql視圖?

回答

0

我找到了解決方案。

我改變了映射,以便在單元測試中它爲域對象生成映射,在SQLite中而不是視圖中創建表。通過這個,我可以在測試環境中創建該對象的存儲庫。

6

我從來沒有理解人們想要測試他們的持久層,並問如何嘲笑它。如果您從測試中消除數據庫,測試數據庫有什麼意義?

如果你想測試一個數據庫,不要嘲笑它。一旦你達到你的滿意度,並且你想轉向使用數據庫的服務,那麼我認爲適合模擬數據庫(因爲你已經測試過了)。

隨着中說,有數據庫測試特殊注意事項:

  1. 確保你有你需要目前的測試數據。
  2. 保持真實的數據安全。
  3. 運行測試前後,測試數據庫處於相同狀態。
+0

+1。很好的答案。 – Steven 2010-12-23 12:45:54