簡體   English   中英

C#單元測試 - 生成模擬DataContexts / LINQ - > SQL類

[英]C# Unit Testing - Generating Mock DataContexts / LINQ -> SQL classes

我喜歡C#的新世界,我已經開始嘗試我的玩具程序了,我想開始編寫一些單元測試。

我的代碼目前通過DatabaseDataContext對象(* .dbml文件)使用數據庫,為此對象創建模擬的最佳方法是什么? 鑒於生成數據庫LINQ - > SQL代碼是多么容易,以及請求的常見程度,我希望VS2010具有內置功能來幫助進行測試。

如果我要離開,這必須手動完成,請您告訴我您的首選方法?

非常感謝,

加文

DataContext的問題在於它不是為mocking而設計的。

一個免費的模擬不可嘲弄的工具是來自Pex的Moles(Pex moles?) 它大致相當於TypeMock。

我知道的最好的方法是提取這個對象的接口並使用它來創建模擬對象,所以如果你使用linqtosql或EF與數據庫交談,或者你根本不和任何數據庫交談,那真的無關緊要。

[免責聲明:我在Typemock工作]

您可以使用Typemock Isolator創建一個假對象並設置它的方法以返回您需要的內容:

var fakeContext = Isolate.Fake.Instance<DatabaseDataContext>();

看看這篇關於如何偽造Linq2Sql的博文: 使用Isolator偽造LINQ to SQL DataContext表

很少有可能對你有用的東西:

Moq(發音為“Mock-you”或只是“Mock”)是.NET從頭開發的唯一一個模擬庫,可以充分利用.NET 3.5(即Linq表達式樹)和C#3.0特性(即lambda表達式)它是最高效,類型安全和重構友好的模擬庫。 它支持模擬接口和類。 它的API非常簡單直接,不需要任何先前的知識或經驗來模擬概念。

LINQPad允許您以現代查詢語言交互式查詢數據庫:LINQ。 與SQL Management Studio親吻再見!

LINQPad支持C#3.0和Framework 3.5中的所有內容,以及更多:

LINQ to Objects LINQ to SQL和實體框架LINQ to XML WCF數據服務和SQL Azure LINQ to SQLite和MySQL Enterprise Server Mindscape LightSpeed ORM(甚至是老式的SQL!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM