2011-10-10 80 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; 

这将帮助您设置控制器和当前用户所有必需的角色。 我个人不会单元测试视图,因为它应该很薄并且倾倒。你的大部分东西应该发生在控制器/业务层。