模仿NHibernate&Linq

Mir*_*age 7 c# testing nhibernate asp.net-mvc mocking

我正在使用NHibernate并在前端公开Session.我有一个控制器动作,它检索任务如下:

public ActionResult Overview(DateTime date)
{
    var allTasks = GetTasksUpUntilDate(date);
    return PartialView("Tasks/Overview", allTasks);
}

private List<TaskOverviewModel> GetTasksUpUntilDate(DateTime date)
{            
    var allTasks = _session.Query<Task>().Where(t.BookedBy.UserName.Equals(CurrentUser.Name,
                                       StringComparison.CurrentCultureIgnoreCase));            
    var tasks = allTasks.Where(t => t.DueDate <= date);

    var taskVMs = new List<TaskOverviewModel>();        
    tasks.ForEach(t => taskVMs.Add(MapEntityToViewModel(t)));

    return taskVMs;
}
Run Code Online (Sandbox Code Playgroud)

现在我不想仅为我的视图创建一个IRepository,因为ISession实际上已经是一个存储库.然而,嘲弄/剔除这个证明相当困难.所以任何人都可以帮助我使用_session.Query返回我在测试时提供的对象列表吗?

我还想避免在内存数据库中设置并使用RhinoMocks进行测试.

Jas*_*ley 5

不要假Nh/linq.而是设置内存中的sqlite数据库进行查询.它们非常快速且易于使用.

  • 通过这样做,您进行了集成测试.即您测试的不仅仅是业务逻辑.你也在'测试'nnib.以及它如何获取数据. (4认同)