繁体   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