我有以下存储库界面
public interface IRepository<TEntity> {
TEntity FindById(int id);
TEntity FindById(long id);
etc
}
然后我有以下从上面的接口继承的 Repository 类
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class {
private DB _context;
public Repository() {
_context = new DB();
}
public Repository(DB context) {
_context = context;
}
Methods.....
}
我创建了一个 FakeRepository<>,它也继承自 IRepository<>
public class FakeRepository<TEntity> : IRepository<TEntity> where TEntity : class {
private FakeDataContext _context;
public FakeRepository() {
_context = new FakeDataContext();
}
public FakeRepository(FakeDataContext context) {
_context = context;
}
Methods....
}
Repository 和 Fake 之间的唯一区别是,我没有使用 LinqToSQL DBContext,而是创建了一个用于测试目的的假数据库。
然后我在单元测试中能够做的是:
ObjectFactory.Initialize(x => { x.For(typeof(Repository<>)).Use(typeof(FakeRepository<>)); });
所以我的测试将始终针对内存中的 fakedbcontext 运行。
但是我得到结构映射错误 104 插件类型错误,我不知道为什么?