0
我有一個viewmodel類用作大量子類的基類。我現在將代碼添加到其中一個基類的方法中。單元測試,以確保所有的派生類正在調用一個基本的方法
protected virtual void OnLanguageChanged(CultureInfo culture)
{
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
}
這是設置新線程的默認文化。
我想確保所有派生類,當他們重寫此方法時,他們稱之爲「base.OnLanguageChanged」。我如何編寫一個單元測試(我正在使用Moq),當至少有一個派生類不調用這個基本方法時,它將失敗。 viewmodel有一個名爲ChildViewModelCollection的屬性,它列出了所有的子視圖模型。我重寫的方法稱爲OnLanguageChanged()。這裏是什麼,我試圖做一個想法:
[TestMethod]
public void OnLanguageChangeCalledByDerivedClasses()
{
var compositeViewModel = Container.Resolve<CompositeViewModel>();
var children = compositeViewModel.ChildViewModelCollection;
var newCulture = new CultureInfo("fr-CA");
// Call method so that children run their overridden methods
compositeViewModel.OnLanguageChanged(newCulture);
// Now how do I check if base.OnLanguageChanged was called by all children
foreach (var childViewModel in children)
{
}
Assert.AreEqual(CultureInfo.DefaultThreadCurrentCulture, CultureInfo.DefaultThreadCurrentUICulture);
}
OnLanguageChanged是,在其中添加這兩行,或者是現有的功能基類中一個全新的函數? – 2014-09-04 15:54:18
是的,它是一個沒有代碼的現有函數(開放和閉合圓括號)。我添加了兩行。 – Ray 2014-09-04 15:57:40
所以代碼確實有當前覆蓋這個函數的子類? – 2014-09-04 15:59:49