How are people unit testing code that uses Linq to SQL人们如何对使用Linq到SQL的代码进行单元测试? 更新: Fredrik在他的博客上提供了一个示例解决方案示例,说明如何对linq2sql应用程序进行单元测试。您可以从以下位置下载: http://web.archive.org/web/20120415022448/http://iridescence.no/post/DataContext-Repository-Pattern-Example-Code.aspx 我不仅觉得发布一个示例解决方案很棒,而且还设法提取了所有类的接口,这使设计更加分离。 我的旧帖子:
*我发现这些博客是制作DataContext包装器的一个很好的开始: 它们涵盖几乎相同的主题,除了第一个实现了为表提取接口的方法。第二个虽然更广泛,所以我也将其包括在内。* 迟到了3年,但这是我的方法: https://github.com/lukesampson/LinqToSQL-test-extensions/ 无需编写包装器或做大量的工作,只需将T4模板放在.dbml旁边,您将获得: 两者都将自动使用您已在DBML中配置的映射。 所以你可以做类似的事情
你可以用
要么
包装DataContext,然后模拟包装器。这是最快的方法,需要对测试进行编码,有些人认为这很奇怪。但是有时候,当您具有无法(轻松)嘲笑的依赖项时,这是唯一的方法。 Mattward在The Wayward Web Log上发表了一篇很棒的文章,内容涉及如何模拟可扩展的Linq2Sql数据上下文。签出-MOCKS NIX-SQL DATACONTEXT的可扩展LINQ Linq使测试变得更加容易。 Linq查询在List上的工作与Linq-to-sql上的工作一样好。您可以将Linq换成SQL以获得列表对象,然后进行测试。 通常,您不需要测试使用LINQ to SQL的代码的一部分,但是如果您确实愿意,则可以使用针对服务器查询的相同数据集,并将它们转换为内存中对象,然后对它运行LINQ查询(它将使用Enumerable方法而不是Queryable)。 另一种选择是使用Matt Warren的DataContext的可模拟版本。 您还可以通过调试器(从IQueryable对象)获取LINQ to SQL使用的SQL语句,手动对其进行检查,然后将其包括在自动化测试中。 LINQ to SQL实际上非常适合单元测试,因为它具有根据DBML中定义的内容快速创建数据库的能力。 通过DataContext创建数据库并使之开始为空,可以非常好地测试ORM层。 我在以下博客中对此进行了介绍:http://web.archive.org/web/20090526231317/http://www.aaron-powell.com/blog/may-2008/unit-testing-linq-to-sql。 aspx |