C# 购物车的单元测试/集成指南

C# 购物车的单元测试/集成指南,c#,nhibernate,nunit,C#,Nhibernate,Nunit,需要一些关于如何对购物车进行单元测试的指导(.netmvc,c#) 我想像使用nhibernate一样使用sqllite,这样我就可以为集成测试创建数据库的内存版本 所以我有一个Cart对象: public class Cart { void Add(Item item); void Delete(Item item); void CalculateTotalBLah(); } 因此,Add方法可能如下所示: public void Add(Item it

需要一些关于如何对购物车进行单元测试的指导(.netmvc,c#)

我想像使用nhibernate一样使用sqllite,这样我就可以为集成测试创建数据库的内存版本

所以我有一个Cart对象:

public class Cart
{
      void Add(Item item);
      void Delete(Item item);

      void CalculateTotalBLah();
}
因此,Add方法可能如下所示:

public void Add(Item item)
{
     ItemDAO item = new SomeFactory();

     item.Add(item);
}
所以我想有两件事需要测试:

  • 购物车对象的内存表示将项目添加到购物车
  • 数据库已正确同步。使用内存中的对象
  • 我相信数据库测试是相当直接的


    如何测试#1,如何消除db操作的依赖性?nunit能帮我吗?

    你可以用一个。然后为存储库创建一个。Mock应该确保调用了save。购物车构造函数应该有一个IRepository,这样您就可以发送模拟的或真实的东西。

    使用活动记录模式对代码进行单元测试非常困难。 您可以使用“单一责任原则”使代码更易于测试,这意味着一个类负责一件事。您的购物车类负责两件事:数据访问和购物车业务逻辑。您可以使用单独的存储库或用于数据访问的查询对象使此代码更易于测试。如果您不想修改代码,可以尝试使用typemock隔离器模拟(据我所知,其他模拟框架无法模拟此类代码,但我个人从不需要typemock)