如何为 Dialog 服务 MVVM Light 编写测试用例
How to write test case for Dialog services MVVM Light
我是 MVVM 的新手,我正在关注 MVVM Light 工具包。
为了实现消息框功能,我搜索并得到了这个 example
没明白的地方是
- Class DialogService 就是我们应该继承IDialogService ??
如果是这种情况,例如在继承接口后class,我们需要编写如下内容
public Task<bool> ShowMessage(string message, string title, string buttonConfirmText, string buttonCancelText, Action<bool> afterHideCallback)
{
//Here a kind of this implemetation i need to do ?
//For example sake i didn't include the parameters.
MessageBox.Show();
}
If the above is true in the view model we will just
dialogueServices.ShowMessage(prms....) ?
So how this can be tested ?
例如,如果它是 filebrowser ,如果我们按照理解在单元测试中调用这种方式,它将打开一个文件浏览器。
如何实现?
因为我对这个模式本身很在意,所以我发现很难理解。
请提供示例实现或任何参考。
编辑
我也提到了这个link。在评论中,它被告知其对观点的责任。
我更糊涂了。一般来说,至少对于确认对话框,我们该怎么做?
谢谢。
不要在您的 ViewModel/Business 逻辑中混合 UI 逻辑。
您应该将业务逻辑、UI 逻辑等问题分开。
我建议您使用 MvvmLight Messenger 工具。您的 ViewModel 应该发布消息 "there is an informational dialog to show" 并且适当的视图应该注册、收听和处理此消息。
示例:
视图模型
public void SomeViewModelMethod() {
if (somethingWentWrong)
Messenger.Default.Publish(new ShowInformationalDialogMessage(title,msg));
}
查看
.. OnLoaded {
Messenger.Default.Register<ShowInformationalDialogMessage>( () => {
UI LOGIC CODE
});
}
要测试这种情况,您应该只在单元测试中注册到已发布的消息 class 并断言此消息逻辑已被执行。
我是 MVVM 的新手,我正在关注 MVVM Light 工具包。 为了实现消息框功能,我搜索并得到了这个 example
没明白的地方是
- Class DialogService 就是我们应该继承IDialogService ??
如果是这种情况,例如在继承接口后class,我们需要编写如下内容
public Task<bool> ShowMessage(string message, string title, string buttonConfirmText, string buttonCancelText, Action<bool> afterHideCallback)
{
//Here a kind of this implemetation i need to do ?
//For example sake i didn't include the parameters.
MessageBox.Show();
}
If the above is true in the view model we will just dialogueServices.ShowMessage(prms....) ? So how this can be tested ?
例如,如果它是 filebrowser ,如果我们按照理解在单元测试中调用这种方式,它将打开一个文件浏览器。 如何实现?
因为我对这个模式本身很在意,所以我发现很难理解。
请提供示例实现或任何参考。
编辑
我也提到了这个link。在评论中,它被告知其对观点的责任。 我更糊涂了。一般来说,至少对于确认对话框,我们该怎么做?
谢谢。
不要在您的 ViewModel/Business 逻辑中混合 UI 逻辑。 您应该将业务逻辑、UI 逻辑等问题分开。
我建议您使用 MvvmLight Messenger 工具。您的 ViewModel 应该发布消息 "there is an informational dialog to show" 并且适当的视图应该注册、收听和处理此消息。
示例:
视图模型
public void SomeViewModelMethod() {
if (somethingWentWrong)
Messenger.Default.Publish(new ShowInformationalDialogMessage(title,msg));
}
查看
.. OnLoaded {
Messenger.Default.Register<ShowInformationalDialogMessage>( () => {
UI LOGIC CODE
});
}
要测试这种情况,您应该只在单元测试中注册到已发布的消息 class 并断言此消息逻辑已被执行。