私はLINQ-to-SQL
ASP.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();
}
}