繁体   English   中英

如何将表达式签名转换为适用于Moq的It.IsAny的表达式

[英]How to convert expression signature to be applicable with `It.IsAny` of `Moq`

按照此答案,我尝试了类似的操作并模拟了以下接口:

public interface IGetRepository<TEntity>
{
    IEnumerable<TEntity> Get(
        Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null);
}

这是我的单元测试方法:

IEnumerable<EventModel> expectedList = return new List<MyModel>() 
{
    new MyModel()
    {
        Id = 0
    }
}

using (var _mock = AutoMock.GetLoose())
{
    var repositoryMock = _mock.Mock<IGenericRepository<EventModel>>();
    repositoryMock
        .Setup(items => items.Get(It.IsAny<Expression<Func<EventModel, bool>>>))
        .Returns(() => expectedList);
}

但是It.IsAny<Expression<Func<EventModel, bool>>>创建以下错误消息:

无法从“方法组”转换为“表达式>”

已经阅读这些类似的问题: 123 ,所以我想我的问题是不同的签名,如果是的话我怎么转换这个签名是适用与It.IsAnymoq

请尝试一下

var expectedList = new List<EventModel>()
            {
                new EventModel()
                {
                    Id = 0
                }
            };

            {
                var repositoryMock = new Mock<IGetRepository<EventModel>>();
                repositoryMock
                    .Setup(items => items.Get(It.IsAny<Func<IQueryable<EventModel>, IOrderedQueryable<EventModel>>>()))
                    .Returns(() => expectedList);
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM