【问题标题】:Moq dotnetcore - cannot convert from 'method group' to 'Expression<Func<Room, bool>>'Moq dotnetcore - 无法从“方法组”转换为“表达式<Func<Room, bool>>”
【发布时间】:2017-04-16 10:42:37
【问题描述】:

我正在尝试在 dotnetcore 项目中设置 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&lt;Expression&lt;Func&lt;Room, bool&gt;&gt;&gt; 之后添加(),但这没有帮助。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多