我喜欢C#这个新世界,我的玩具程序已经到了需要开始编写一些单元测试的地步。
我的代码目前通过一个DatabaseDataContext对象(*.dbml文件)使用数据库,那么创建此对象的mock的最佳方法是什么?考虑到生成数据库LINQ -> SQL代码非常容易,并且这是一个很常见的请求,我希望VS2010内置了一些功能来帮助测试。
如果我想得太离谱,必须手动完成,请告诉我您的首选方法。
非常感谢,
Gavin
我喜欢C#这个新世界,我的玩具程序已经到了需要开始编写一些单元测试的地步。
我的代码目前通过一个DatabaseDataContext对象(*.dbml文件)使用数据库,那么创建此对象的mock的最佳方法是什么?考虑到生成数据库LINQ -> SQL代码非常容易,并且这是一个很常见的请求,我希望VS2010内置了一些功能来帮助测试。
如果我想得太离谱,必须手动完成,请告诉我您的首选方法。
非常感谢,
Gavin
我知道的最好方法是提取该对象的接口,使用它来创建模拟对象,这样无论您使用linqtosql还是EF与数据库通信,或者根本不与任何数据库通信,都不会有影响。
[声明:我在 Typemock 工作]
您可以使用Typemock Isolator创建一个假对象并设置其方法返回您所需的内容:
var fakeContext = Isolate.Fake.Instance<DatabaseDataContext>();
看一下这篇关于如何伪造Linq2Sql的博客文章:使用Isolator伪造LINQ to SQL DataContext表
以下是一些可能对您有用的内容:
LINQPad可以让你交互式地使用现代查询语言LINQ来查询数据库。告别SQL Management Studio吧! LINQPad支持C# 3.0和Framework 3.5中的所有内容,以及更多功能:LINQ to Objects、LINQ to SQL和Entity Framework、LINQ to XML、WCF Data Services & SQL Azure、LINQ to SQLite和MySQL Enterprise Server、Mindscape LightSpeed ORM(甚至还有老式的SQL!)Moq(发音为“Mock-you”或仅为“Mock”)是唯一一个专为.NET从头开发的模拟库,以充分利用.NET 3.5(即Linq表达式树)和C# 3.0功能(即lambda表达式),使其成为最具生产力,类型安全和重构友好的模拟库。它支持模拟接口和类。其API非常简单直观,不需要任何关于模拟概念的先前知识或经验。