unit-testing - 如何在 MVVM 中使用消息框?

标签 unit-testing testing mvvm messagebox

似乎MVVM 模式中的XAML 很难弹出消息框。我的客户坚持认为验证标签和颜色对他们不利。他们仍然想要一个消息框。怎么做到的?

我知道我可以在 View 模型中弹出消息框,但它违反了 View 模型的全部目的。我也可以引发错误,并在某些异常处理程序中弹出消息框,但消息框不是异常。它是正常程序流程的一部分。

有没有用 XAML 做的好方法?我的客户喜欢消息框。她不关心 MVVM 模式,她在使用 MVVM 和单元测试之前从未有过任何质​​量问题。但是现在,她连自己的留言箱都收不到了,所以她不是很开心。

最佳答案

一种可能性是为消息框使用一个接口(interface),例如

public interface IMessageBoxProvider
{
    MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult);

}

和一个实现此接口(interface)并使用普通或自定义消息框的包装器类。 在 View 模型中,您可以像这样使用

private IMessageBoxProvider MessageBox { get; set; }

其中 MessageBox 是包装类。所以现在您已经解耦了实际的消息框,因此您可以进行单元测试等等。

关于unit-testing - 如何在 MVVM 中使用消息框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2882529/

相关文章:

php - 在 Laravel 中对只读模型进行单元测试的正确方法是什么?

testing - 找不到满足版本限制的 'androidx.test:monitor' 版本

python - 使用 Python 和模拟器测试 VHDL/FPGA

mvvm - 如何使用 MVVM、PRISM 和 MEF 在没有用户请求的情况下处理来自 View 模型的 UI 交互

c# - 获取 View 模型中的选定选项卡(wpf)

WPF 数据绑定(bind)更新 comboxbox2 基于 combobox1 中的选择更改与 MVVM

javascript - 使用 Jest 进行测试时,是否有更快的方法来重置模拟?

.net - 如何使我的字符串比较不敏感(忽略)空格中的细微差别?

python - 重载unittest测试用例

actionscript-3 - 我正在尝试测试文本输入框是否具有焦点