【发布时间】:2019-05-20 16:58:00
【问题描述】:
我正在尝试最小化我拥有的存储库,该存储库定义为:
public IQueryable<TEntity> GetAll(Expression<Func<TEntity, bool>> predicate = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, Func<IQueryable<TEntity>, IIncludableQueryable<TEntity, object>> include = null, bool disableTracking = true)
有没有办法模拟这个?我希望使用我提供的存储库的模拟数据来执行查询。我不知道如何告诉 MOQ,当我调用 GetAll 时,我希望它仍然运行传入的查询,但它与我提供的数据集相反。所以它不会进入数据库,而是针对我配置的模拟集。我能够创建数据,它包含 12 条记录,但我希望 getall moq 调用执行它的查询并将其过滤为应该返回的 2 条。
调用发生的实际服务是:
var list = await _unitOfWork.GetRepository<CASE_ACTIVITY>().GetAll(predicate: x => x.SM_SITE_ID == siteId && x.CMS_USER_ID == userId
&& x.IS_DELETED == "N" && x.Appointment.IS_DELETED == "N" && x.Appointment.IS_ARCHIVED == "N" && x.IS_ARCHIVED == "N"
&& ((x.Appointment.APPOINTMENT_DATETIME.HasValue && x.Appointment.APPOINTMENT_DATETIME.Value.Date == DateTime.Today.Date)
|| (!x.Appointment.APPOINTMENT_DATETIME.HasValue && x.ACTIVITY_STATUS_ID == _appSettings.CASE_ACTIVITY_STATUS_ID_PENDING)))
.Include(x => x.Activity_Lookup).Include(x => x.Appointment).ThenInclude(x => x.Cms_Client).Include(x => x.Cms_Case)
.ToListAsync();
【问题讨论】:
标签: c# unit-testing moq