在aspNet mvc 3中对HttpApplication进行单元测试是否有意义?

时间:2011-04-08 09:35:37

标签: asp.net-mvc

在aspNet mvc 3中对HttpApplication进行单元测试是否有意义?

2 个答案:

答案 0 :(得分:1)

如果你的意思是 - “我对单元测试HttpApplication类本身是否有意义” - 没有。除非您是ASP.NET团队的开发人员。通常,您应该对您正在编写的代码进行单元测试,而不是其他人。

但是,如果你的意思是“我对依赖于HttpApplication的类进行单元测试是否合理”,那么很可能是的。你可能有这样的类,为了断言你自己的类行为正确,模拟(或以其他方式伪造)HttpApplication类是很有意义的。

答案 1 :(得分:0)

是的,如果你要在单元测试中使用它,你需要嘲笑它。

我会这样做:

1:向MvcApplication(在global.cs中)添加公共静态属性/方法

  public static string MyProperty { get; set; }

2:创建界面

 public Interface IApplication 
    {
      string MyProperty {get;set;}
    }

3:为您创建一个包装类MvcApplication并实现接口

public class MvcApplicationWrapper: IApplication 
{
    public string MyProperty 
                {
                  get{
                 return MvcApplication.MyPropetry;

                   }
                set{
                MvcApplication.MyPropetry = value;
                  }

                 }
}

4:在控制器上创建一个公共属性以延迟加载IApplication

private IApplication app;
public IApplication Application{ 
get{
if(app == null){
app = new MvcApplicationWrapper();
}
return app;
}
set
{
app = value;
}
}

5:当你进行单元测试时,创建一个Mocked IApplication并设置控制器的Application属性

var controller = new Controller();
controler.Application = new MockApplication();
/* do you tests */