Moq dotnetcore - 无法将“方法组”转换为“Expression<Func<Room,bool>>”

3

我正在尝试在一个dotnetcore项目中设置Moq。我有一个被我的控制器调用的通用存储库。我想测试这个存储库并使用moq来设置调用。但是我遇到了一个错误。

所初始化的通用存储库调用,其中TRoom

public T GetSingle(Expression<Func<T, bool>> predicate, params 
Expression<Func<T, object>>[] includeProperties)

RoomController 的调用如下:

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

但是我一直遇到错误:
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>>'

其他帖子建议在It.IsAny<Expression<Func<Room, bool>>>后面添加(),但这并没有起到帮助作用。有什么想法吗?
1个回答

4

params 接受一个数组,因此将第二个期望更改为期望任何表达式数组 It.IsAny<Expression<Func<Room, object>>[]>()

roomRepositoryMock
    .Setup(c => c.GetSingle(It.IsAny<Expression<Func<Room, bool>>>(), It.IsAny<Expression<Func<Room, object>>[]>()))
    .Returns<Room>(null);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接