Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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#_Moq - Fatal编程技术网

C# 无法为接口模拟传递构造函数参数

C# 无法为接口模拟传递构造函数参数,c#,moq,C#,Moq,当我调试代码并使用MocklessonPlannerFactory创建读取该行时,我得到错误: 无法为接口模拟传递构造函数参数 var mockSchoolclassCodeService=new Mock(); var mockDateService=new Mock(); var mockLessonplannerAFactory=newmock(mockDateService.Object); var mockLessonplannerBFactory=newmock(mockDateSe

当我调试代码并使用MocklessonPlannerFactory创建读取该行时,我得到错误:

无法为接口模拟传递构造函数参数

var mockSchoolclassCodeService=new Mock();
var mockDateService=new Mock();
var mockLessonplannerAFactory=newmock(mockDateService.Object);
var mockLessonplannerBFactory=newmock(mockDateService.Object);
var service=new TimeTableService(mockUnitOfWork.Object、mockLessonplannerAFactory.Object、mockLessonplannerBFactory.Object、mockSchoolclassCodeService.Object);
我的TimeTableService只接受接口类型的实例。但是MocklessonPlannerafFactory和BFactory。。。希望在其构造函数中也传递一个IDateService


我的代码怎么了?

从接口创建的模拟将具有默认构造函数,因为接口没有构造函数。请记住,您是在模拟接口,而不是具体的类

“但是mockLessonplannerAFactory和BFactory……希望在其构造函数中也传递IDateService。”


它们都是从接口模拟的,因此没有构造函数。mock类将创建一个默认构造函数,它不需要传递任何东西。

您只是想做什么

1) 创建一个普通的接口模拟

  var mockDateService = new Mock<IDateService>();

是的,我刚刚通过删除mockDateService.Object的传递实现了一切正常。这并不能解决真正的问题,如何修改模拟设置mockLessonPlanAFactory和mockLessonPlanBFactory不需要构造函数参数。他们拥有的任何使用通常在具体实现的构造函数中传递的对象的方法或属性本身都是模拟方法/属性,您可以将它们设置为返回一个适当的值(否则就不是真正模拟这些对象)。您可以根据需要设置方法和属性。
  var mockDateService = new Mock<IDateService>();
mockDateService .Setup(s => s.ConstructorParam).Returns(constructorParamValue);