在aspNet mvc 3中对HttpApplication进行单元测试是否有意义?
答案 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 */