需要一些关于如何对购物车(.net mvc,c#)进行单元测试的指导。
我想使用sqllite,因为我正在使用nhibernate,这样我就可以创建一个内存中版本的数据库来进行集成测试。
所以我有一个购物车对象:
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是为我做的吗?
发布于 2009-12-02 22:20:29
您可以使用存储库模式。然后为存储库创建一个莫克。Mock应该确保调用了保存。购物车构造函数应该使用一个IRepository,这样您就可以发送一个模拟或真实的东西。
发布于 2009-12-02 22:21:11
使用活动记录模式进行单元测试代码是非常困难的。您可以通过使用“单一责任原则”来简化代码的测试,这意味着一个类对一件事负责。cart类负责2件事:数据访问和购物车业务逻辑。您可以使用单独的存储库或数据访问的查询对象来简化这段代码的测试。如果你不想修改你的代码,你可以试着用类型隔离器来模拟(据我所知,其他的模拟框架不能模拟这类代码,但我个人并不需要打字机)。
https://stackoverflow.com/questions/1836192
复制相似问题