【问题标题】:How to write unit tests for repository layer in domain driven design architecture using moq framework如何使用 moq 框架为域驱动设计架构中的存储库层编写单元测试
【发布时间】:2014-08-07 07:37:40
【问题描述】:

如何使用 moq 框架为领域驱动设计架构中的存储库层编写单元测试?我的存储库类如下。

public class ContactRepository : Repository<Contact, int, ContactsDb>, IContactRepository
{
    public ContactRepository(IUnitOfWork unitOfWork, IObjectContextFactory objectContextFactory)
        : base(unitOfWork, objectContextFactory) { }

    public IEnumerable<Contact> FindAll()
    {
        var predicate = PredicateBuilder.True<ContactsDb>();

        //IEnumerable<ContactsDb> contacts = findContactsSummary(predicate);
        IEnumerable<ContactsDb> contacts = ObjectContextFactory.Create().Contacts
            .Include(c => c.Addresses).Include(c => c.Communication).Include(c => c.ContactEmails)
            .Include(c => c.ContactPhones).Include(c => c.Image).Where(c => !c.IsDeleted);
        foreach (ContactsDb dc in contacts)
        {
            if (dc.ContactType == ContactType.Person)
                yield return Mapper.Map<ContactsDb, Person>(dc);
            else
                yield return Mapper.Map<ContactsDb, Company>(dc);
        }
    }

在这个存储库类中,哪些是模拟的?请举个例子。

【问题讨论】:

    标签: unit-testing asp.net-mvc-5 moq-3


    【解决方案1】:

    在存储库类中,您基本上是访问数据库并将查询结果映射到域实体。所以基本上你正在使用不属于你的代码。你不必嘲笑不属于你的东西。你可以找到鲍勃叔叔here的解释。

    因此,在这些情况下,我所做的是针对真实数据库测试存储库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-06
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 2010-09-19
      相关资源
      最近更新 更多