2011-10-10 35 views

回答

1

這是我會做:

  • 與存根User對象
  • 爲User對象的stub(類的IPrincipal的)
  • 創建請求對象的stub(類型HttpRequestBase的)
  • 將存根請求對象注入到請求上下文中。

參見下面的例子(使用犀牛製品)

var CurrentUser = MockRepository.GenerateStub<IPrincipal>(); 
CurrentUser.Stub(u => u.IsInRole("Administrator")).Return(true); 
var context = MockRepository.GenerateStub<HttpContextBase>(); 
var requestContext = new RequestContext(context, new RouteData()); 
var request = MockRepository.GenerateStub<HttpRequestBase>(); 
context.User = CurrentUser; 
context.Stub(c => c.Request).Return(request); 
controller = new YourController(); 
controller.ControllerContext = new ControllerContext(requestContext, controller); 

var view = controller.DoAction() as ViewResult; 

這將幫助您設置控制器和當前用戶所有必需的角色。 我個人不會單元測試視圖,因爲它應該很薄並且傾倒。你的大部分東西應該發生在控制器/業務層。