gpt4 book ai didi

c# - 不能为接口(interface)模拟传递构造函数参数

转载 作者:可可西里 更新时间:2023-11-01 03:10:18 25 4
gpt4 key购买 nike

当我调试代码并阅读创建 mockLessonplannerAFactory 的行时,我收到错误:

Constructor arguments cannot be passed for interface mocks.

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);

我的 TimeTableService 只接受接口(interface)类型的实例。但是 mockLessonplannerAFactory 和 BFactory... 还希望在其构造函数中传递一个 IDateService。

我的代码有什么问题?

最佳答案

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

“但是 mockLessonplannerAFactory 和 BFactory...希望在它们的构造函数中也传递一个 IDateService。”

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

关于c# - 不能为接口(interface)模拟传递构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com