メソッドを呼び出そうとしている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();
}
}
}