2013-02-21 42 views
5

我正在創建一個調用創建任務方法的單元測試。創建任務方法調用一些模擬的外部對象,這些是我測試的目的,但在我測試的方法中,還有一個SaveChanges調用可以保存我的任務。 我想要做的是在System.Data.Entity內填充DbContext類,以便SaveChanges方法不再訪問數據庫。如何用微軟假貨填充DbContext?

我添加了一個假的組件,用於System.Data.Entity但是當我使用System.Data.Entity .Fakes它說:「無法解析符號‘正版正貨’」,雖然我可以訪問System.Data.Fakes(但我have't添加System.Data假的組裝)

我在我的實體上下文中僞造了其他方法,但由於該方法是從DbContext繼承的,因此我無法在我的實體上僞造SaveChanges方法。

ShimDBEntities.AllInstances.SaveChanges = (x) => { ... }; 

上面的代碼塊說「無法解析符號'SaveChanges'」。

那麼如何使用Microsoft Fakes來填充DbContext?

+1

我不是墊片的這樣的粉絲,尤其是在你的DbContext。我想你可能需要重新考慮你的設計以更好地測試你的代碼。檢查我的博客文章關於這個問題:http://sitecore.paragon-inc.com/resources/blogs-posts/the-repo-man – IronMan84 2013-02-21 16:51:08

+1

謝謝,但該項目已在生產和設計尚未被認爲可以測試,所以我正在努力與我擁有的東西一起工作 – 2013-02-21 16:54:52

回答

2

我已經設法通過在我的BaseRepository類中創建SaveChanges方法並將其用於我所有存儲db.SaveChanges的派生存儲庫中。

然後我shimed我BaseRepository讓我SaveChanges方法將無能爲力