如何将表达式签名转换为适用于 `Moq` 的 `It.IsAny`
How to convert expression signature to be applicable with `It.IsAny` of `Moq`
在这个 answer 之后,我尝试了类似的东西并模拟了一个接口:
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>>>
创建了一条错误消息:
cannot convert from 'method group' to 'Expression>'
已经阅读了这些类似的问题:1,,,所以我想我的问题是不同的签名,如果是这样 我如何将此签名转换为适用于 It.IsAny
moq
?
请试试这个
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);
}
在这个 answer 之后,我尝试了类似的东西并模拟了一个接口:
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>>>
创建了一条错误消息:
cannot convert from 'method group' to 'Expression>'
已经阅读了这些类似的问题:1,It.IsAny
moq
?
请试试这个
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);
}