我有一堆WebPartBase类,我试图在其上调用一个方法。一些方法调用 UI 上的控件。我想以某种方式存根这些控件,以便在尝试对其设置值时不会引发异常。有谁知道这样做的好方法?如果它们被初始化也很好,但我不确定如何在不运行 Web 服务器的情况下初始化它们。
我的测试代码如下所示。IntializeOnAdd()是KPIWebPartBase上的一个方法,KPIWebPartBase继承自WebPartBase。
[TestMethod]
public void InvokeAllWidgets()
{
var user = new User("adminqaphi");
user.CustomerID = TestConfig.ClientID;
var classes = typeof(KPIWebPartBase)
.Assembly
.GetTypes()
.Where(t => t.IsSubclassOf(typeof(KPIWebPartBase)) && !t.IsAbstract );
foreach (var c in classes)
{
Console.WriteLine(c.Name);
var instance = (KPIWebPartBase)Activator.CreateInstance(c);
foreach (var billingMetric in Enum.GetValues(typeof(BillingMetric)))
{
instance.CurrentUser = user;
instance.BillingMetric = (BillingMetric)billingMetric;
if (instance is StartEndKPIWebPartBase)
{
var startEndKPI = (StartEndKPIWebPartBase)instance;
startEndKPI.StartDate = new DateTime(2007, 1, 1);
startEndKPI.EndDate = new DateTime(2008, 1, 1);
}
instance.InitializeOnAdd();
}
}
}