我试图单元测试添加到现有的代码库和我在第一障碍几乎下降通话重构由于该网站是如何构建的。单元测试 - 如何静态类
给你一些细节,在这个网站每个控制器从名为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