C# Prism WPF:如何moq回调以返回IDialogResult.Result==Buttonresult.ok

C# Prism WPF:如何moq回调以返回IDialogResult.Result==Buttonresult.ok,c#,wpf,moq,C#,Wpf,Moq,我想要moq以下接口: public interface IDialogService { void ShowDialog(string name, IDialogParameters parameters, Action<IDialogResult> callback); } 出于测试目的,我希望r.Result有时匹配按钮Result.OK,有时不匹配。有没有办法用最小起订量做到这一点?您可以使用: var mock=new mock(); mock.Setup(x=>x

我想要moq以下接口:

public interface IDialogService
{
   void ShowDialog(string name, IDialogParameters parameters, Action<IDialogResult> callback);
}
出于测试目的,我希望r.Result有时匹配按钮Result.OK,有时不匹配。有没有办法用最小起订量做到这一点?

您可以使用:

var mock=new mock();
mock.Setup(x=>x.ShowDialog(It.IsAny(),It.IsAny(),It.IsAny())
.Callback((字符串名称、IDialogParameters参数、操作回调)=>
回调(新对话框结果(ButtonResult.Ok));
...
thing.AbortDeleteDialog();

非常感谢。我已经在修补callback了,但是没有得到newdialogaresult应该是callback的一个参数,而是尝试将它指定为o\u o
 protected bool AbortDeleteDialog()
    {
        bool abort= true; 
        DialogService.ShowDialog("Should xy be deleted?", [some parameters...],
            r => abort = r.Result != ButtonResult.OK);
        return abort;
    }
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();