2011-08-09 20 views
0

我有在Global.asax中這是由填充的Application_Start在使用一個靜態變量控制器動作....c#(asp.net mvc):測試使用global.asax變量的控制器?

這裏是一個簡單的示例代碼

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

但是,當然,在測試時,我測試我的控制器MvcApplication.BaseU爲NULL

其不叫,並從在Global.asax

什麼是正確的這樣做是最好的選擇填寫的的Application_Start?

任何想法真的很有幫助

回答

1

我有一個使用在Global.asax中 這是由的Application_Start

這是不好的填充在一個靜態變量的控制作用。你可以重構你的代碼,讓你的控制器把這個值作爲構造函數參數(構造函數注入),然後配置你的DI框架來傳遞正確的值。現在在你的單元測試中,爲測試傳遞一個模擬值是一件簡單的事情。