私は次のリポジトリインターフェースを持っています
public interface IRepository<TEntity> {
TEntity FindById(int id);
TEntity FindById(long id);
etc
}
次に、上記のインターフェイスから継承する次のリポジトリクラスがあります
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class {
private DB _context;
public Repository() {
_context = new DB();
}
public Repository(DB context) {
_context = context;
}
Methods.....
}
IRepository<>からも継承するFakeRepository<>を作成しました
public class FakeRepository<TEntity> : IRepository<TEntity> where TEntity : class {
private FakeDataContext _context;
public FakeRepository() {
_context = new FakeDataContext();
}
public FakeRepository(FakeDataContext context) {
_context = context;
}
Methods....
}
リポジトリと偽物の唯一の違いは、LinqToSQL DBContextを使用するのではなく、テスト目的で偽物を作成したことです。
次に、単体テストで実行できることは次のとおりです。
ObjectFactory.Initialize(x => { x.For(typeof(Repository<>)).Use(typeof(FakeRepository<>)); });
したがって、私のテストは常にメモリ内のfakedbcontextに対して実行されます。
ただし、構造マップエラー104プラグインタイプエラーが発生し、理由がわかりません。