首页 > 解决方案 > Prism WPF:如何最小化回调以返回 IDialogResult.Result == Buttonresult.ok

问题描述

我想moq以下界面:

public interface IDialogService
{
   void ShowDialog(string name, IDialogParameters parameters, Action<IDialogResult> callback);
}

我将它与以下代码一起使用:

 protected bool AbortDeleteDialog()
    {
        bool abort= true; 
        DialogService.ShowDialog("Should xy be deleted?", [some parameters...],
            r => abort = r.Result != ButtonResult.OK);
        return abort;
    }

出于测试目的,我想 r.Result 有时匹配 ButtonResult.OK 有时不匹配。有没有办法用最小起订量做到这一点?

标签: c#wpfmoq

解决方案


您可以使用回调

var mock = new Mock<IDialogService>();

mock.Setup(x => x.ShowDialog(It.IsAny<string>(), It.IsAny<IDialogParameters>(), It.IsAny<Action<IDialogResult>>())
    .Callback((string name, IDialogParameters parameters, Action<IDialogResult> callback) =>
        callback(new DialogResult(ButtonResult.Ok)));

...

thing.AbortDeleteDialog();

推荐阅读