遵循此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>>>
创建了以下错误消息:
无法从“方法组”转换为“表达式>”
已经阅读了以下类似问题:1,2,3,所以我猜我的问题是不同的签名,如果是这样的话我如何将这个签名转换为适用于It.IsAny
中的moq
?
答案 0 :(得分:1)
请尝试这个
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);
}