0

使用 .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 控制器定义了 OnActionExecuting() 和 OnActionExecuted() 方法,但它们从未被调用。

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

4

1 回答 1

0

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

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

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

于 2013-04-30T05:43:30.710 回答