【发布时间】:2013-06-05 09:11:46
【问题描述】:
我正在将LINQ-to-SQL 与 ASP.NET MVC 4 一起使用,到目前为止,我有一个存储库层,它与一个真实的数据库联系。当我想进行单元测试时,这不是很好。
存储库层也不应该有逻辑,所以这就是为什么我想模拟LINQ DataContext,这样我就可以创建一个与模拟DataContext或真实DataContext对话的服务层.
我看到我的 LINQ DataContext 类继承了DataContext,但是没有接口,所以我不能真正模拟它。我还看到 DataContext 使用Table<> 类并且存在一个接口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();
}
}
【问题讨论】:
标签: c# linq-to-sql asp.net-mvc-4 mocking