如何模拟(Moq)使用可选参数的通用存储库

时间:2019-08-01 09:57:06

标签: c# unit-testing optional-parameters

我有一个使用通用存储库来获取数据的类。通用存储库使用autofac注入到类中。我需要对该课程进行单元测试。因此,模拟通用存储库。我遇到的问题是需要模拟的方法中的可选参数

我已经使用Moq - Mock Generic Repository上的答案了。

要模拟的代码如下:

public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
...
...
...
public virtual IEnumerable<TEntity> Fetch(
            Expression<Func<TEntity, bool>> filter = null,
            Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
            string includeProperties = "")
    {
        // Code to implement this
    }
 ...
 ...
 }

当前的模拟设置:

RepositoryMock.Setup(x => x.HaalOp(It.IsAny<Expression<Func<SomeObject,bool>>>())).Returns<Expression<Func<SomeObject, bool>>> (predicate => data.SomeObject.Where(predicate).ToList());  

当前语法错误状态: “表达式树可能不包含使用可选参数的调用或调用” 这条消息听起来绝对是绝对的,但是有没有办法模拟这个消息?

0 个答案:

没有答案