2009-12-15 30 views
0

什麼是單元測試使用LINQ to SQL並返回小數的類的最好和最簡單的方法,是通過Mocking?如果是的話,我該怎麼做呢?嘲笑LINQ to SQL

+0

只有您擁有的模擬類型。 [標記尼德姆](http://www.markhneedham.com/blog/2009/12/13/tdd-only-mock-types-you-own/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+MarkNeedham+%28Mark+ Needham%29)有一個關於爲什麼的簡短博客條目。 – Oded 2009-12-15 09:58:13

回答

0

這裏是一個article about mocking the LINQ to SQL DataContext。這似乎是你在找什麼,因爲它規定:

所以[通常]它是不是真的能單位 測試你的LINQ to SLQ查詢,而不 連接到基礎數據源 - 不理想。 但是不要害怕,這裏 是這個問題的通用解決方案

而且它與

總結所以我們現在有一種方法來測試我們的LINQ 我們 CustomerController類內SQL查詢,而不 依靠約束的DataContext

的數據庫

此外(在上述工作後)NMock library可以幫助你編程模擬對象的情況,並可能用於編以更正式的方式反對這一點,或者與其他模擬(我還沒有嘗試過)整合。

1

我沒能拿出舒服嘲笑使用Linq to SQL進行單元測試的解決方案,所以我採用了不同的路線。

我創建了一個具有已知值的測試數據庫進行測試。然後,因爲你不想讓你的測試,改變你的數據的內容,我採用的NUnit的XtUnit擴展: http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx

這個擴展奇蹟般地恢復任何改變你的測試向該數據庫一旦測試完成。

我不會撒謊,這個解決方案是有點難看。但是,它也不需要你提出一個bizarro嘲諷的概念。一旦建立了測試數據,編寫測試非常簡單。所有測試需要確保您的類從ExtensibleFixture繼承,並用[DataRollBack]屬性標記您的測試,並且XtUnit將完成剩下的工作。