【问题标题】:.net MVC 4 RavenDB Unit Test Controller OnActionExecuting not firing.net MVC 4 RavenDB 单元测试控制器 OnActionExecuting 未触发
【发布时间】:2013-04-23 18:02:24
【问题描述】:

使用 .Net MVC 4、RavenDB、MSTest。

我按照 RavenDB 文档创建了一个抽象控制器类,它在 OnActionExecuting() 中创建 RavenSession,并将数据保存在 OnActionExecuted() 中。

我正在尝试对我的控制器进行单元测试,但 OnActionExecuting() 和 OnActionExecuted() 方法永远不会触发。这意味着永远不会创建会话,并且我无法访问数据库 - 因此单元测试失败。

在单元测试中,我调用控制器方法如下:

PersonController controller = new PersonController();            
JsonResult result = controller.GetPerson("people/1");

PersonController.GetPerson 会触发,但当 RavenSession 没有值(它应该在上面提到的抽象类方法中实例化)时很快就会出错。

PersonController 派生自抽象类 RavenControllerRaven Controller 定义了 OnActionExecuting() 和 OnActionExecuted() 方法,但它们从未被调用。

我应该在单元测试中以另一种方式调用控制器方法吗?

【问题讨论】:

    标签: asp.net-mvc unit-testing controller abstract-class ravendb


    【解决方案1】:

    我最终将以下代码添加到我的 PersonController

     private IDocumentSession _RavenSession = null;
        public  IDocumentSession RavenSession
        {
            get
            {
                return _RavenSession ?? base.RavenSession;
            }
            set
            {
                _RavenSession = value;
            }
        }
    

    现在我可以在单元测试中实例化控制器时创建一个新会话。我收到一条警告说我正在隐藏一个继承的成员,但它工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      相关资源
      最近更新 更多