0
我有一堆WebPartBase我試圖調用一個方法。一些方法在UI上調用控件。我想以某種方式對這些控件進行存根控制,以便在試圖設置它們的值時不會拋出異常。有誰知道這樣做的好方法嗎?如果它們被初始化,它也可以,但我不確定如何在不運行Web服務器的情況下初始化它們。如何針對WebPartBase類編寫單元測試並模擬控件?
我的測試代碼如下所示。 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();
}
}
}
它調用數據庫來獲取一些值。然後它將值分配給窗體上的控件。當它將值分配給表單域時,我的測試立即崩潰。 – 2013-02-13 18:36:21
我想你應該模擬數據庫,以便測試代碼(單元)的「內部」邏輯。 – Jocke 2013-02-14 06:51:02