我試圖單元測試添加到現有的代碼庫和我在第一障礙幾乎下降通話重構由於該網站是如何構建的。單元測試 - 如何靜態類
給你一些細節,在這個網站每個控制器從名爲SiteController一個基本控制器繼承和控制器的構造函數使用靜態輔助類填充一些數據。
例如
public class HomeController : SiteController
{
public ActionResult Index()
{
//Do stuff here
}
}
而這裏的基本控制器
public class SiteController
{
public SiteController()
{
viewModel = CategoryHelper.GetAllCategories();
}
}
和靜態GetAllCategories helper方法
public static class CategoryHelper
{
public static IList<string> GetAllCategories()
{
//Go off and get the categories from the WCF layer
return _categories;
}
}
我不能嘲笑一個靜態的類,但我怎麼能重構這段代碼,以便我可以使用單元測試來處理它。我們已經在整個站點使用了DI,並且我知道這裏的理論 - 我應該將這個靜態類包裝在一個抽象層中,無論如何這對於代碼來說都更好。但是這個我不太確定的實用性。
這也可能是顯而易見的,但我在這裏的目的是爲了保持現場工作(明顯),而且還改寫靜態類或調用它以這樣一種方式,我可以針對它的單元測試。我是新編寫單元測試的,所以我只是在遇到這些問題之前得到滿意的結果,即使是通過一個測試也能看到一個綠色標記!這很令人沮喪,而且當我知道理論解決方案時更是如此,但是不知道該怎麼做才能讓課堂上的問題得到解決。
你可以更具體一點你不確定哪一點?你幾乎完全描述了你需要做的事情,所以我不清楚是什麼讓你沮喪。 –
或者不使用包裝*僅使用靜態類* – BradleyDotNET
實際問題是什麼? 「我如何在單元測試中使用它」是一個不起步的程序。你可以用它來使用它。儘管在很多情況下理想情況下應該避免使用「靜態」,而且通常是過度使用或者錯誤使用,但這本質上並不正確。 *您遇到的*實際問題*是什麼? – David