gpt4 book ai didi

c# - 如何在 ViewModel 中对 OnPropertyChanged 事件处理程序进行单元测试

转载 作者:行者123 更新时间:2023-11-30 22:02:41 25 4
gpt4 key购买 nike

我在单元测试 View 模型方面遇到了以下问题。

在我的项目中,有多个 View 模型(比如说 A、B、C 和 D)。 View 模型 A 是主视图模型,它处理来自 View 模型 B、C 和 D 的 PropertyChanges,然后更新主视图。

View 模型 A 中的大多数方法/属性都是可单元测试的,除了处理来自 B、C 和 D 的属性更改事件的事件处理程序方法。

例如:

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?

最佳答案

您可以创建一个包装类来执行此操作(见下文),只需在其位置使用可测试类,它就会执行代码。

public class Program
{
private static void Main(string[] args)
{
TestableProgram2 tp = new TestableProgram2();
tp.b_PropertyChanged(new Program(), "bang");
}
}

public class Program2
{
protected void b_PropertyChanged(object sender, string e)
{
Debug.Write(e);
}
}

public class TestableProgram2 : Program2
{
public new void b_PropertyChanged(object sender, string e)
{
e = "altered"; // here to demonstrate this code is entered.
base.b_PropertyChanged(sender, e);
}
}

关于c# - 如何在 ViewModel 中对 OnPropertyChanged 事件处理程序进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26634357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com