Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 模拟单元测试中的对话框_C#_Unit Testing_Moq_Viewmodel - Fatal编程技术网

C# 模拟单元测试中的对话框

C# 模拟单元测试中的对话框,c#,unit-testing,moq,viewmodel,C#,Unit Testing,Moq,Viewmodel,请建议如何使用moq在单元测试中模拟以下类型的对话框 void ShowDialog(string windowName, string parentWindowName, Dictionary<string, object> inputFields, Action<Dictionary<string, object>> closeCallBack, Dictionary<string, object> windowPropert

请建议如何使用moq在单元测试中模拟以下类型的对话框

void ShowDialog(string windowName, string parentWindowName, 
  Dictionary<string, object> inputFields, 
  Action<Dictionary<string, object>> closeCallBack, 
  Dictionary<string, object> windowProperties = null);
void ShowDialog(字符串windowName、字符串parentWindowName、,
字典输入字段,
行动结束回调,
字典窗口属性=null);
我尝试过以下方法,但不起作用:

UIServicemock.Setup(u => u.ShowDialog(It.IsAny<string>, It.IsAny<string>, 
  It.IsAny<Dictionary<string,object>>, 
  It.IsAny<Action<Dictionary<string, object>>>, 
  It.IsAny<Dictionary<string,object>>));   
UIServicemock.Setup(u=>u.ShowDialog(It.IsAny,It.IsAny,
是的,伊桑,
是的,伊桑,
是的,是的;
我想我缺少语法。

这个
It.IsAny()
调用是一个方法,因此需要在它后面加括号:

UIServicemock.Setup(u => u.ShowDialog(It.IsAny<string>(), It.IsAny<string>(), 
  It.IsAny<Dictionary<string,object>>(), 
  It.IsAny<Action<Dictionary<string, object>>>(), 
  It.IsAny<Dictionary<string,object>>()));
UIServicemock.Setup(u=>u.ShowDialog(It.IsAny(),It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny());

您好,非常感谢,但是现在的问题是如何在这个方法的回调中传递参数,因为这个方法采用回调类型的参数(因此它将调用另一个方法)在它最后的第二个参数中。这是一个不同的问题-我将为此打开一个新问题-显示实际执行您正在模拟的调用的代码,因为它将提供更多上下文请打开新问题,您的回答将非常有用:函数调用:uiService.ShowDialog(ViewName.UnlockScriptPasswordDialog,StudioViewName.MainWindow,passwordDictionary,this.OnUnlockScriptSetCallBack,null)我的意思是你需要打开这个问题。毕竟,是你想要答案,不是吗?我为这个链接打开了另一个问题: