我正在编写一个MVC应用程序。MVC视图单元测试基于身份验证的元素可见性
如果我有一段代码:
@if (User.IsInRole("Administrator")) {
@Html.DropDownListFor(...)
}
所以dropdownlistfor才可见,甚至还有为管理员。
你如何测试这种情况?
我正在编写一个MVC应用程序。MVC视图单元测试基于身份验证的元素可见性
如果我有一段代码:
@if (User.IsInRole("Administrator")) {
@Html.DropDownListFor(...)
}
所以dropdownlistfor才可见,甚至还有为管理员。
你如何测试这种情况?
如果你想单元测试你的意见,我会建议检查出the Razor Single File Generator。这将允许您预编译您的视图,并创建单元测试。
这是我会做:
参见下面的例子(使用犀牛制品)
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;
这将帮助您设置控制器和当前用户所有必需的角色。 我个人不会单元测试视图,因为它应该很薄并且倾倒。你的大部分东西应该发生在控制器/业务层。