我正在运行单元测试视图模型的以下问题。如何在ViewModel中单元测试OnPropertyChanged事件处理程序
在我的项目中,有多个视图模型(比如说A,B,C和D)。 视图模型A是主视图模型,它处理来自视图模型B,C和D的PropertyChanges,然后更新主视图。
大多数方法/在查看模型的属性单元以外的事件处理方法处理来自B,C和D.
所述的PropertyChanged事件例如可测试:
public A()
{
b.PropertyChanged += b_PropertyChanged;
c.PropertyChanged += c_PropertyChanged;
}
protected void b_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
//process something based on the e.PropertyName
//might call some private or protected methods here to help with the processing
switch(e.Property)
{
case "SearchResults":
SearchResults = b.SearchResults;
break;
}
}
如何可以我去测试b_PropertyChanged而不公开?
更改'b'或'c'中的属性?有什么问题? – Sheridan 2014-10-29 15:34:56
你想要测试的是什么?视图模型A中的某些状态是否在viewmodel B等中更改了特定的属性?给出一个例子,说明如果b_PropertyChanged方法是公开的,你的Asserts将会在你的单元测试中出现。 – user469104 2014-10-29 15:37:37
是 - A将处理B或C中的任何属性更改。 – aggietech 2014-10-29 15:38:54