c# - WPF & MVVM - 单元测试和弹出消息框或对话框

标签 c# wpf mvvm

我正在用 MVVM 编写一个应用程序,到目前为止效果很好。
但我正在 ViewModel 中工作,这会引发一个错误,我想向用户展示让他们知道。

我可以在我的 ViewModel (VM) 中做这样的事情:

MessageBox.Show(errorMessage);

或更可能是这样的:
new ErrorMessageWindow(errorMessage).ShowDialog()

所以我可以设计它。

问题是我正在从 VM 创建一个 UI 弹出窗口。
我正在为应用程序创建单元测试,它也会弹出窗口并停止运行,直到它被手动关闭。

寻找一个好的方法。

我正在考虑在 VM 中引发一个事件 - 但由于 View 确实不了解 VM 或其属性,我不知道我将如何订阅它。

我没有使用任何外部框架——我宁愿自己实现任何东西。

最佳答案

我通常为 viewmodel 提供了一种方法来表明它需要引发错误。您可以通过依赖注入(inject)、将其传递给构造函数等来完成此操作。实现由包含应用程序或绑定(bind) View 提供。

当您进行测试时,您将传入“显示错误消息”功能的测试实现,该功能仅验证它是否被调用以及它是否请求了正确的错误消息。理想情况下,您将 View 模型限制为将资源名称和参数数组传递给格式字符串,以便它也适用于国际化。

关于c# - WPF & MVVM - 单元测试和弹出消息框或对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15663320/

相关文章:

c# - 附加到字符串

c# - 从 XAML 将枚举值作为命令参数传递

c# - 在 View 模型中使用mvvm消息的字符串值作为变量

c# - 如何访问另一个控件的 viewModel

c# - 找不到正确的命名空间?

c# - F# 中的 Func<T, TResult> 属性

c# - exe 需要 .NET 桌面运行时

c++ - MFC与WPF进程间通信

wpf - 带有空项目的组合框?

wpf - 将 MVVM 用于 WPF 对话框