为单元测试创​​建(模拟)存储库 - 使用什么而不是DbContext

时间:2017-08-03 12:46:46

标签: c# entity-framework unit-testing

我必须在项目中创建单元测试基础设施。但是,我有点困在如何模拟存储库以及使用哪个结构而不是for (int j = 0; j < i; i++)

这是我们的存储库

DbContext

IRepository的界面

 public class Repository : IRepository
    {
        protected readonly IProjContext _context;    
        public Repository(IProjContext context)
        {
            this._context = context;
        }    

    public T GetById<T>(object id) where T : class
        {
            return _context.Set<T>().Find(id);       
        }
   ...}

数据库上下文

 public interface IRepository {
        T GetById<T>(object id) where T : class;
        ... }

数据库上下文接口

public class ProjContext : DbContext, IProjContext { ... }

这个类中有很多类似的方法(也实现了接口public interface IProjContext : IDbContext { ... } ) - IRepositoryCount等等,还有Delete

如您所见,我们使用没有UnitOfWork的单个存储库。现在我必须嘲笑它​​。

我决定不使用任何Mocking框架,只是创建了我们自己的SaveChanges。它应该是这样的:

MockedRepository

问题是 - 由于public class MockedRepository: IRepository { public T GetById<T>(object id) where T : class { /// ?????? Get data from where? } } 用于单元测试,我不需要那里的DbContext。但是,我无法理解使用哪个结构代替DbContext,以便能够将数据(通用数据表示不同类型MockedRepository的数据)添加到存储库,并实现简单的方法,如T和其他方法。 / p>

0 个答案:

没有答案