私はLINQ-to-SQLASP.NET MVC 4 を使用しています。現時点では、実際のデータベースに接続するリポジトリ レイヤーがあります。これは、単体テストを行う場合にはあまり適していません。
また、リポジトリ レイヤーには決してロジックがあってはならないためLINQ DataContext、モックDataContextまたは実際の と通信するサービス レイヤーを作成できるように、 をモックしDataContextます。
LINQ DataContext クラスが を継承していることがわかりDataContextますが、インターフェイスがないため、実際にモックすることはできません。また、 DataContext がTable<>クラスを使用し、 interface が存在することもわかりますITable。おそらくそれをモックできます。また、私LINQ DataContextは部分クラスなので、何らかの方法でそれを操作できますか?
これをグーグルで検索すると、すべての記事は 2008 年のものであり、古くなっています。誰かが私を正しい適切な方向に導くことができますか?
これが私がやりたいことの例です。コントローラーごとに個別のサービス クラスを用意します。
public class MyServiceClass
{
IDataContext _context;
// Constructors with dependency injection
public MyServiceClass()
{
_context = new MyRealDataContext();
}
public MyServiceClass(IDataContext ctx)
{
_context = ctx;
}
// Service functions
public IEnumerable<ModelClass> GetAll()
{
return _context.ModelClass;
}
public ModelClass GetOne(int id)
{
return _context.Where(s => s.ID == id).SingleOrDefault();
}
}