需要一些关于如何进行购物车单元测试的指导(.net mvc,c#)。
我想使用sqllite,因为我正在使用nhibernate,所以我可以创建一个内存版本的数据库进行集成测试。
所以我有一个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,如何删除数据库操作的依赖性? nunit会以某种方式为我做这件事吗?
答案 0 :(得分:1)
您可以使用repository pattern。然后为存储库创建Moq。模拟应确保调用保存。购物车构造函数应该使用IRepository,这样您就可以发送模拟或真实内容。
答案 1 :(得分:1)
使用活动记录模式对代码进行单元测试非常困难。 您可以使用“单一责任原则”使代码更容易测试,这意味着一个类负责一件事。您的购物车类负责两件事:数据访问和购物车业务逻辑。您可以使用单独的存储库或数据访问的查询对象来更轻松地测试此代码。如果您不想修改代码,可以尝试使用typemock隔离器进行模拟(据我所知,其他模拟框架不能模拟这种代码,但我个人从不需要类型代码)