【发布时间】:2014-10-29 15:28:32
【问题描述】:
我在单元测试视图模型方面遇到了以下问题。
在我的项目中,有多个视图模型(比如说 A、B、C 和 D)。 视图模型 A 是主视图模型,它处理来自视图模型 B、C 和 D 的 PropertyChanges,然后更新主视图。
视图模型 A 中的大多数方法/属性都是可单元测试的,除了处理来自 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中的属性?有什么问题? -
您想准确测试什么?如果在视图模型 B 等中更改了特定属性,则视图模型 A 中的某些状态?如果 b_PropertyChanged 方法是公开的,请举例说明您的 Asserts 在单元测试中的内容。
-
是 - A 将处理 B 或 C 中的任何属性更改
-
好的 - 更新了代码以包含更多用于 b_PropertyChanged 的代码。在我的单元测试中,我会断言类似 SearchResults is not null
标签: c# wpf unit-testing mvvm