单元测试asp.net控制器时,你在哪里嘲笑httprequestbase?

时间:2009-12-21 19:07:15

标签: asp.net-mvc nunit mocking controllers

当单元测试asp.net控制器时,你不必以某种方式模拟httpcontextbase吗?

我的所有控制器都继承自我编写的自定义控制器类(它只是向原始控制器类添加了一些常用属性)。 就像它一样:

public class MyController : Controller
{
    protected override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext context)
    {
         // look for a specific cookie
    }

}

所以我真的想开始对我的控制器进行单元测试,只是不确定我是如何模拟控制器类以及随之而来的httpcontext。

1 个答案:

答案 0 :(得分:2)

以下是如何使用Moq设置Mock HttpContextBase的示例:

var httpCtxStub = new Mock<HttpContextBase>();

var controllerCtx = new ControllerContext();
controllerCtx.HttpContext = httpCtxStub.Object;

sut.ControllerContext = controllerCtx;

// Exercise and verify the sut

其中sut表示被测系统(SUT),即您要测试的控制器。