1

如何使用 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);
        }
    }

在这个存储库类中,哪些被模拟了?请举一些例子。

4

1 回答 1

0

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

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

于 2014-08-13T14:52:24.053 回答