asp.Net   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net – 在做TDD时如何最好地创建一个测试数据库?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在执行ASP.NET网站(例如ASP.NET MVC网站)时,创建测试持久层的最佳做法是什么?

我看过的许多例子在单元测试项目中使用了Moq(或另一个嘲笑框架),但是我想要像我的持久层一样,让我的网站显示数据和东西,但它不是来自数据库。我想做最后。我所看到的所有嘲笑的东西只存在于单元测试中。

人们想要(stub?)伪造出持久层以快速,快速地开发时,做什么做法?我使用依赖注入来处理它,并为我的持久层提供一些硬编码的结果(这真的是手动和无聊)。

其他人在做什么?示例和链接会很棒:)

updatE

只是一点点更新:到目前为止,我有一个公平的里程没有一个假存储库和一个SQL存储库 – 每个类实现一个接口。然后,使用DI(我使用StructureMap),我可以在我的假存储库或SQL存储库之间切换。到目前为止,它的工作很好:)

(也惊讶地认为我在近11个月前提到这个问题,从我正在编辑这个,现在呢!)

解决方法

假设您正在使用Rob Conery的MVC商店前台的Repository模式:

http://blog.wekeroad.com/mvc-storefront/mvc-storefront-part-1/

我遵循Rob Conery的教程,但遇到与你相同的想法。最好的做法是将您创建的mock Repository移动到一个名为mocks的独立项目中,然后当您实例化服务时,您可以轻松地将其与实际交换。如果您的感觉冒险,您可以创建一个工厂,从配置文件获取值来实例化模拟或真正的存储库,

例如

public static ICatalogRepository GetCatalogRepository(bool usemock)
{
     if(usemock)
          return new FakeCatalogRepository();
     else
          return new SqlCatalogRepository();
}

或者使用依赖注入框架:)

container.Resolve<ICatalogRepository>();

祝你好运!

编辑:响应您的意见,听起来像您想使用列表和LINQ来模拟数据库的操作,例如GetProducts,StoreProduct。我以前做过这个。以下是一个例子:

public class Product
{
     public int identity { get; set; }
     public String Name { get; set; }
     public String Description { get; set; }
     //etc
}

public class FakeCatalogRepository()
{
     private List<Product> _fakes;

     public FakeCatalogCatalogRepository()
     {
          _fakes = new List<Product>();

          //Set up some initial fake data
          for(int i=0; i < 5; i++)
          {
              Product p = new Product
              {
                 Identity = i,Name = "product"+i,Description = "description of product"+i
              };

              _fakes.Add(p);
          }
     }

     public void StoreProduct(Product p)
     {
         //Emulate insert/update functionality

         _fakes.Add(p);
     }

     public Product GetProductByIdentity(int id)
     {
          //emulate "SELECT * FROM products WHERE id = 1234
          var aProduct = (from p in _fakes.AsQueryable()
                         where p.Identity = id
                         SELEct p).SingLeorDefault();

          return aProduct;
     }
}

这有点更有意义吗?

大佬总结

以上是大佬教程为你收集整理的asp.net – 在做TDD时如何最好地创建一个测试数据库?全部内容,希望文章能够帮你解决asp.net – 在做TDD时如何最好地创建一个测试数据库?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。