我有一个使用通用存储库来获取数据的类。通用存储库使用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());
当前语法错误状态: “表达式树可能不包含使用可选参数的调用或调用” 这条消息听起来绝对是绝对的,但是有没有办法模拟这个消息?