2009-12-21 18 views
2

当单元测试一个asp.net控制器,你不必以某种方式模拟httpcontextbase?当单元测试一个asp.net控制器时,你在哪里模拟httprequestbase?

我所有的控制器都从我编写的自定义控制器类继承而来(它只是将一些常用属性添加到原始控制器类中)。 所以它像:

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

} 

所以真正想创业的单元测试我的控制器,只是不确定我如何去嘲讽控制器类和与它去的HttpContext。

回答

2

这里是你如何使用最小起订量来建立一个模拟HttpContextBase一个例子:

var httpCtxStub = new Mock<HttpContextBase>(); 

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

sut.ControllerContext = controllerCtx; 

// Exercise and verify the sut 

其中sut代表被测系统(SUT),即你希望控制器来测试。

相关问题