C# Moq dotnetcore-无法从';方法组';至';表达式<;Func<;房间,布尔>&燃气轮机';
我正在尝试在dotnetcore项目中设置Moq。我有一个从我的一个控制器调用的通用存储库。我想测试这一点,一个是使用moq设置呼叫。但是我犯了一个错误 因此启动的通用存储库调用C# Moq dotnetcore-无法从';方法组';至';表达式<;Func<;房间,布尔>&燃气轮机';,c#,unit-testing,moq,.net-core,C#,Unit Testing,Moq,.net Core,我正在尝试在dotnetcore项目中设置Moq。我有一个从我的一个控制器调用的通用存储库。我想测试这一点,一个是使用moq设置呼叫。但是我犯了一个错误 因此启动的通用存储库调用T为Room为: public T GetSingle(Expression<Func<T, bool>> predicate, params Expression<Func<T, object>>[] includeProperties) 模拟部分如下所示: var
T
为Room
为:
public T GetSingle(Expression<Func<T, bool>> predicate, params
Expression<Func<T, object>>[] includeProperties)
模拟部分如下所示:
var room = _roomRepository.GetSingle(r => r.Id == id, ro => ro.Image);
roomRepositoryMock.Setup(c => c.GetSingle(It.IsAny<Expression<Func<Room, bool>>>(), It.IsAny<Expression<Func<Room, object>>>()))
.Returns<Room>(null);
roomRepositoryMock.Setup(c=>c.GetSingle(It.IsAny(),It.IsAny())
.返回(空);
但我不断地犯错误:
RoomControllerTest.cs(62,55): error CS1503: Argument 1: cannot convert from 'method group' to 'Expression<Func<Room, bool>>'
RoomControllerTest.cs(62,70): error CS1503: Argument 2: cannot convert from 'System.Linq.Expressions.Expression<System.Func<viten_i_senter_backend.Models.Room, object>>' to 'System.Linq.Expressions.Expression<System.Func<viten_i_senter_backend.Models.Room, object>>'
RoomControllerTest.cs(62,55):错误CS1503:参数1:无法从“方法组”转换为“表达式”
RoomControllerTest.cs(62,70):错误CS1503:参数2:无法从“System.Linq.Expressions.Expression”转换为“System.Linq.Expressions.Expression”
其他帖子建议在It.IsAny
之后添加()
,但这没有帮助
有什么想法吗?
params
接受一个数组,因此将第二个期望值更改为期望任何表达式数组It.IsAny()
roomRepositoryMock
.Setup(c=>c.GetSingle(It.IsAny(),It.IsAny())
.返回(空);
roomRepositoryMock
.Setup(c => c.GetSingle(It.IsAny<Expression<Func<Room, bool>>>(), It.IsAny<Expression<Func<Room, object>>[]>()))
.Returns<Room>(null);