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

Eli*_*eth 17 c# moq

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

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

var mockSchoolclassCodeService = new Mock<ISchoolclassCodeService>();
var mockDateService = new Mock<IDateService>();
var mockLessonplannerAFactory = new Mock<ILessonplannerAFactory>(mockDateService.Object);
var mockLessonplannerBFactory = new Mock<ILessonplannerBFactory>(mockDateService.Object);

var service = new TimeTableService(mockUnitOfWork.Object, mockLessonplannerAFactory.Object, mockLessonplannerBFactory.Object, mockSchoolclassCodeService.Object);
Run Code Online (Sandbox Code Playgroud)

我的TimeTableService只接受接口类型的实例.但是mockLessonplannerAFactory和BFactory ......想在他们的构造函数中也传递一个IDateService.

我的代码出了什么问题?

Col*_*kay 14

线索在错误消息"无法为接口模拟传递构造函数参数".

从接口创建的模拟将具有默认构造函数,因为接口没有构造函数.记住你是在嘲笑界面而不是具体的类.

"但mockLessonplannerAFactory和BFactory ......想在他们的构造函数中也传递IDateService."

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

  • 这不能解决真正的问题,您将如何修改模拟设置 (3认同)