gpt4 book ai didi

c# - 在模拟函数以返回对象时,表达式树可能不包含使用可选参数的调用或调用

转载 作者:行者123 更新时间:2023-12-03 08:17:39 30 4
gpt4 key购买 nike

尝试设置一个函数来最小化对数据库的调用以返回对象

我试图模拟的函数是

res = ReservationMongo.GetById<res.Reservation>(request.ReferenceNumber);

定义为

T GetById<T>(object id, bool fixId = false);

但是在我的设置中我遇到了这个错误:

an expression tree may not contain a call or invocation that uses optional arguments

我的设置:

Mock <IMongoDBService> resMock = new Mock<IMongoDBService>();
resMock.Setup(x => x.GetById<Reservation>(request.ReferenceNumber)).Returns(res1);

最佳答案

可选参数也需要包含在要模拟的函数的设置中,即使它们没有在成员调用中显式使用。

//...

Reservation res1 = new Reservation {
name = "bob",
age = "29",
occupant.name = "bob G",
occupant.name = string.empty
};

Mock<IMongoDBService> resMock = new Mock<IMongoDBService>();
resMock
.Setup(x => x.GetById<Reservation>(It.IsAny<int>(), It.IsAny<bool>())
.Returns(res1);

//...

请注意使用 It.* 参数匹配器,以允许输入任何参数值并仍然获得所需的行为

引用Moq Quickstart

关于c# - 在模拟函数以返回对象时,表达式树可能不包含使用可选参数的调用或调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68853409/

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