jef*_*eff 6 wpf unit-testing mvvm
我一直在研究WPF应用程序,我正在使用ModelViewViewModel设计模式.我有一些来自视图的事件,导致ViewModel活动.
从UnitTest获得这些事件的合理方法是什么?例如,我想模拟drop事件.我真的不想构建一个存根视图,只是为了提升事件.
欢迎任何建议.
谢谢.
Ori*_*rds 17
根据MVVM模式:
如果你需要处理事件,那么我知道有两种方法可以做到:
1: 在viewmodel中显示一个命令,并使用数据绑定来触发它.这是我的首选方式,例如:
class MyViewModel
{
public ICommand ClickCommand { get; set; }
}
<Button Command="{Binding Path=ClickCommand}" />
Run Code Online (Sandbox Code Playgroud)
如果执行此操作,则只需myViewModel.ClickCommand.Execute手动调用即可测试该命令.
2: 在viewmodel中公开一个函数,并在文件中写入绝对最小值.xaml.cs来处理事件并调用函数,例如:
class MyViewModel
{
public void HandleClick(){ }
}
<Button Click="MyClickHandler">
//.xaml.cs file
public void MyClickHandler( Object sender, EventArgs e ) {
m_viewModel.HandleClick()
}
Run Code Online (Sandbox Code Playgroud)
如果您这样做,那么您只需myViewModel.HandleClick手动调用即可进行测试.您不需要为单元测试MyClickHandler代码而烦恼,因为它只有1行!
听起来您的 ViewModel 类中直接有一个用于 drop 事件的事件处理程序。将处理程序放在 UI 层中(进而调用 ViewModel 中的函数)是否更有意义?这样,您的单元测试就可以调用该函数(就 ViewModel 而言,模拟拖放操作)。
另外,最好将 ViewModel 与 UI 代码分开。
| 归档时间: |
|
| 查看次数: |
4811 次 |
| 最近记录: |