我在我的解决方案中使用Ninject和Moq进行了设置。我使用实体框架,并使用 FakeDbSet 实现(见下文)。这让我得到GetById,Create,Update和其他方法,因为我实现了自己的方式进行工作。我所有的服务都有一个方法,例如:List<Invoice> GetBySpecification(InvoiceSpecification specification);这是唯一一个我不能轻易模拟的,因为我的实现是这样的,我使用DbContext和 useWhere语句。 public int GetBySpecification(InvoiceSpecification specification) { IQueryable<Invoice> query = BuildQuery(specification); return query.Count(); } public IQueryable<Invoice> BuildQuery(InvoiceSpecification specification) { IQueryable<Creditor> query = _db.Creditors; if (!string.IsNullOrWhiteSpace(specification.Query)) { var search = specification.Query.ToLower().Trim(); query = query.Where(c => c.OfficeEmail.Contains(search) || c.OfficePhone.Contains(search) || c.CompanyRegistrationNumber.Contains(search) || c.CompanyName.Contains(search) || c.LastName.Contains(search) || c.FirstName.Contains(search)); } if (!string.IsNullOrWhiteSpace(specification.CompanyRegistrationNumber)) { var search = specification.CompanyRegistrationNumber.ToLower().Trim(); query = query.Where(c => c.CompanyRegistrationNumber == search); } if (specification.UpdateFrequency.HasValue) { query = query.Where(c => c.UpdateFrequency == specification.UpdateFrequency.Value); } return query.Where(c => !c.DateDeleted.HasValue); }我的问题:我希望能够SetUp在我运行课程时使用 a 。我想测试我的GetBySpecification和BuildQuery方法,我在其他方法中使用这些方法并不少见。我希望能够运行 SetUp 方法,使用我填充到列表中的 C# 对象在内存中提供一些“基本数据库”,因此当我使用时_db.Creditors,它返回我设置的自定义债权人列表,然后使用查询在那一个。我想我很远,但不完全确定我从这里如何继续。我想我需要以某种方式更新我的 Resolver / FakeDb 集,但我真的很感激有人在正确的方向上帮助我。
1 回答
- 1 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消