c# - Moq dotnetcore - 无法从 'method group' 转换为 'Expression<Func<Room, bool>>'

标签 c# unit-testing moq .net-core

我正在尝试在 dotnetcore 项目中设置起订量。我有一个从我的一个 Controller 调用的通用存储库。我想测试一下是否正在使用最小起订量来设置调用。但是我得到一个错误。

因此启动的通用存储库调用 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>>> 之后,但这没有帮助。

有什么想法吗?

最佳答案

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

关于c# - Moq dotnetcore - 无法从 'method group' 转换为 'Expression<Func<Room, bool>>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43436345/

相关文章:

javascript - Jasmine:如何监视内部对象方法调用?

c# - 使用私有(private) setter 测试属性

c# - .net C# 中 MVC 的最佳实践

c# - 在哪里为所有 HttpRequest 设置自定义 ClaimsPrincipal

php - 我想测试一个具有 php 函数 die() 的 php 方法 xy,我该怎么做?

java - 在不初始化类的情况下测试方法

c# - Moq 定义严格的模拟

c# - 如何注入(inject)一个不提供接口(interface)和虚拟方法的类的伪实现?

c# - 如何正确地转换或包装事件处理程序的类型? (+= 中的委托(delegate)与 EventArgs)

c# - 在回发时从服务器端调用 javascript