如何为Dialog服务MVVM Light编写测试用例

我是MVVM的新手,我正在关注MVVM Light工具包。 为了实现我搜索的消息框function并得到了这个例子

我不明白的是

  1. 我们应该通过inheritanceIDialogService创建类DialogService吗?

如果在inheritance接口之后在类中就是这种情况,我们需要编写类似下面的内容

public Task ShowMessage(string message, string title, string buttonConfirmText, string buttonCancelText, Action afterHideCallback) { //Here a kind of this implemetation i need to do ? //For example sake i didn't include the parameters. MessageBox.Show(); } 

如果视图模型中的上述情况属实,我们只会对话SERVSer.ShowMessage(prms ….)? 那么如何测试呢?

例如,如果它是filebrowser,如果我们在unit testing中按照这种方式调用它将会打开一个文件浏览器。 如何实现?

由于我非常喜欢这种模式本身,我发现很难理解。

请提供示例实现或任何参考。

编辑

我也提到了这个链接 。 在评论中,它被告知其对一个观点的责任。 我更困惑。 一般来说,至少对于确认对话框我们将如何做?

谢谢。

不要在ViewModel / Business逻辑中混用UI逻辑。 您应该分离业务逻辑,UI逻辑等问题。

我建议你使用MvvmLight Messenger设施。 您的ViewModel应该发布消息“有一个信息对话框显示”,适当的视图应该注册,监听和处理此消息。

例:

视图模型

 public void SomeViewModelMethod() { if (somethingWentWrong) Messenger.Default.Publish(new ShowInformationalDialogMessage(title,msg)); } 

视图

 .. OnLoaded { Messenger.Default.Register( () => { UI LOGIC CODE }); } 

要测试这种情况,您应该只在unit testing类中注册已发布的消息,并断言此消息逻辑已执行。