2012-03-27 59 views
0

我正在创建一个购买网站,该网站将使用MVP和asp.net销售计算机部件。我试图在Bussiness层单元测试一个模型,它将使用实体模型将一些值插入到数据库中。我如何在visual studio中测试这种方法

public class CategoryModelRepsitory : IModelRepository 
{ 
    public void Insert(string catName, long catParent) 
    { 
     EntityContext con = new EntityContext(); 
     Category cat = new Category(); 
     cat.Name = catName; 
     cat.Parent = catParent; 
     con.Category.AddObject(cat); 
     con.SaveChanges(); 
    } 
    //other methods like update and delete 
} 

那么我该如何测试这个并验证使用内置的visual studio测试类的期望?

回答

0

可以使用统一(http://unity.codeplex.com/)或NInject(http://www.ninject.org/)+ MOQ(http://code.google.com/p/moq/),让你的架构可以很容易地进行测试,例如:

[Dependency]  
IDataContext Context {get; set;} 

之后,你就可以嘲笑在您的测试中使用IDataContext并检查是否有一些具有所需参数的方法被调用

ps顺便说一下,我不确定特别是这将是可编译的,但方法应该是这样的。

另外我建议你使用它

这也将更多的可测试性添加到您的项目写一些抽象IRepository类和访问数据库。 (这是在方法内部创建DataContexts的非常糟糕的方法,它应该是针对一个客户端或线程+应使用DI + IoC原则进行计算)

+0

什么是IDataContext?是我的例子中的EntityContext?如果是我在哪里定义依赖性?我无法通过vs.net做到这一点吗? – jim 2012-03-27 09:01:19

+0

检查这一个: http://thedatafarm.com/blog/data-access/agile-entity-framework-4-repository-part-2-the-repository/ – Ruslan 2012-03-27 09:02:42

+0

我已经保存了该系列,但它没有提到对任何地方的DI或IoC明确性,我如何在系列的代码示例中识别它们? – jim 2012-03-27 09:28:26

相关问题