bni*_*dyc 10 .net c# wpf mstest mvvm
我正在使用MVVM模式开发WPF应用程序.我有ViewModel,代码如下:
public bool EditModeEnabled
{
get { return _EditModeEnabled; }
set
{
_ModeEditModeEnabled = value;
OnPropertyChanged("EditModeEnabled");
OnPropertyChanged("CommentTextBoxVisibility");
}
}
Run Code Online (Sandbox Code Playgroud)
OnPropertyChanged是引发PropertyChanged事件的基类的虚方法.我想测试PropertyChanged事件提升,并测试我的测试方法:
public void EditModeEnabledTest()
{
var imageViewModel = TestHelper.GetTestImageViewModel();
var firedEvents = new List<string>();
imageViewModel.PropertyChanged += ((sender, e) => firedEvents.Add(e.PropertyName));
imageViewModel.Mode = true;
Assert.AreEqual(firedEvents.Count, 2);
Assert.IsTrue(firedEvents.Contains("EditModeEnabled"));
Assert.IsTrue(firedEvents.Contains("CommentTextBoxVisibility"));
...
}
Run Code Online (Sandbox Code Playgroud)
这是测试ProprtyChanged事件的好方法吗?
Mar*_*ann 11
我使用一点Fluent API来做到这一点.它允许你编写这样的测试:
var imageViewModel = TestHelper.GetTestImageViewModel();
imageViewModel.ShouldNotifyOn(s => s.EditModeEnabled)
When(s => s.Mode = true);
Run Code Online (Sandbox Code Playgroud)
除了简洁之外,我更喜欢这种方法,因为它是类型安全的 - 没有字符串值可以与您的API保持同步.
要测试为多个属性引发事件,您可以编写另一个执行此操作的测试.这将为您提供许多测试,但每个测试都非常小,您可以避免使用断言轮盘.