【发布时间】:2020-11-10 13:43:38
【问题描述】:
我有一个用于确认的 Prism dialogService(对话框中的“是”和“否”按钮),我就是这样使用它的;
bool confirmed = false;
DialogParameters p = new DialogParameters
{
{ "title", title },
{ "message", message }
};
dialogService.ShowDialog("ConfirmationDialog", p, r => { confirmed = r.Result == ButtonResult.OK; });
if (!confirmed)
{
return;
}
// code I am not able to test
它就像一个魅力,但我无法在返回后测试代码,因为在我执行测试时“确认”总是错误的,所以它总是返回并且“返回”之后的代码永远不会执行.
我认为测试它的最好方法应该是以某种方式在“r”中注入 IDialogResult 值,这样我就可以强制我总是在测试r.Result == ButtonResult.OK。但是……我该怎么做呢?
也许我的确认对话方法不好,或者我遗漏了一些东西,所以任何建议都会对我有很大帮助。
注意:我使用 Fake It Easy 进行测试,但在任何其他测试框架中解释的解决方案都不是问题。
更新:这是测试中 dialogService 的实现:
dialogService = A.Fake<IDialogService>();
然后将其注入到 ViewModel 中:
var viewModel = new MyViewModel(dialogService);
谢谢
【问题讨论】:
-
这将有助于在您的测试中查看
dialogService的实现/创建。如果它是一个模拟,你可以告诉它把你想要的任何参数传递给回调...... -
@Haukinger,你是对的,我已经更新了包括如何实现 dialogService 在内的问题。谢谢
标签: unit-testing prism