为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Ninject 时如何模拟通用 Get 方法并使用 SetUp 方法填充模拟数据库?

使用 Ninject 时如何模拟通用 Get 方法并使用 SetUp 方法填充模拟数据库?

C#
慕莱坞森 2021-06-03 22:18:55
我在我的解决方案中使用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
提交
取消
意见反馈 帮助中心 APP下载
官方微信