c#(asp.net mvc):测试一个使用global.asax变量的控制器?

时间:2011-08-09 09:59:04

标签: asp.net-mvc unit-testing

我有一个控制器操作,它使用Global.asax上的静态变量,该变量由Application_Start填充....

这是简单的示例代码

    string url = VirtualPathUtility.Combine(MvcApplication.BaseU, "/geturl");

但当然在我测试控制器的测试中,MvcApplication.BaseU为NULL

因为它没有被global.asax

中的Application_Start调用和填充

正确执行此操作的最佳选择是什么?

任何想法都非常有用

1 个答案:

答案 0 :(得分:1)

  

我有一个控制器操作,它使用Global.asax上的静态变量   由Application_Start

填写

那很糟糕。您可以重构代码,以便控制器将此值作为构造函数参数(构造函数注入),然后配置DI框架以传递正确的值。现在在你的单元测试中,通过一个模拟的测试值就可以了。