0

我對單元測試有點新,所以希望這個問題有意義。我的UnitTest應該模擬我的UnitOfWork,Repository和Context還是Context?

我的設置: Visual Studio 2010中 實體框架4.1 起訂量

我已經位於我BAL服務類使用的UnitOfWork在我DAL。 UnitOfWork管理對各種存儲庫的訪問,這些存儲庫又通過一個Context對象訪問數據庫。

我想創建一個服務類公共方法的單元測試,該方法負責使用lambda表達式的一些非常複雜的「GetNextObject」類型邏輯。

問題: 我可以很容易地模擬我的DBContext並創建一個我想測試我的Services方法(服務類本質上是查詢存儲庫)的對象的DBSet。這是做到這一點的正確方法,還是更多的是集成測試?通過模擬上下文我已經刪除了數據庫,但我仍然使用UnitOfWork和Repository類。我應該做一個複雜的模擬所有這些對象嗎?

謝謝! AFrieze

回答

0

假設您的服務僅取決於存儲庫和單元工作,您不必模擬DbConext,是嗎?一般來說,我們不模擬DbContext主要是因爲沒有太多的測試,因爲repository/unitofwork基本上是dbcontext的包裝器。爲了測試你的服務,嘲笑倉庫和單位工作應該足夠了。如果您想測試數據庫操作,請執行集成測試。

+0

基本上我在服務類中有一個方法,它使用unitofwork/repository來查詢對象。我想測試查詢邏輯並確保我得到正確的對象。我的想法是模擬上下文,並主要使用內存數據庫設置來測試不同的情況。 – AFrieze

+0

你可以通過模擬unitofwork/repository來測試查詢邏輯,對吧?我相信這個答案更好地爲你服務。 http://stackoverflow.com/questions/6766478/unit-testing-dbcontext。 –

相關問題