我必须在项目中创建单元测试基础设施。但是,我有点困在如何模拟存储库以及使用哪个结构而不是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 { ... }
) - IRepository
,Count
等等,还有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>