2009-12-21 61 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),即你希望控制器來測試。