Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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# MOQ中的重载返回值_C#_Unit Testing_Moq - Fatal编程技术网

C# MOQ中的重载返回值

C# MOQ中的重载返回值,c#,unit-testing,moq,C#,Unit Testing,Moq,我正在努力了解更多关于Moq的设置和单元测试。不过我遇到了一个小问题 我想做的是这样的: view.Setup(x => x.GetReference("object1")).Returns(object1); view.Setup(x => x.GetReference("object2")).Returns(null); 然而,当我以这种方式进行调用时,我从未遇到过会对Null语句作出反应的代码块。我应该如何设置设置,使它们在被特定参数调用时以特定的方式运行 moq重载两种返回

我正在努力了解更多关于Moq的设置和单元测试。不过我遇到了一个小问题

我想做的是这样的:

view.Setup(x => x.GetReference("object1")).Returns(object1);
view.Setup(x => x.GetReference("object2")).Returns(null);

然而,当我以这种方式进行调用时,我从未遇到过会对Null语句作出反应的代码块。我应该如何设置设置,使它们在被特定参数调用时以特定的方式运行

moq重载两种返回值的方法:

  • instance:返回(实例)
  • delegate(Func):返回(()=>newfoo())
  • 我认为这个问题是由于使用Returns方法的模糊性造成的

    因此,您需要通过以下方式为代码的第二次设置传入显式类型NULL:

  • view.Setup(x=>x.GetReference(“object2”))。返回((ExplicitType)null)
  • view.Setup(x=>x.GetReference(“object2”))。返回(()=>null)

  • 您可能需要围绕测试设置提供更多代码,以了解您正在尝试的内容。mock的设置要求测试调用view.GetReference(“object2”),如果您没有得到预期的null返回,那么mock就不会被“object2”参数调用。您能否发布完整的单元测试以及可能触发GetReference调用的测试中的代码?