我正在写一个MVC应用程序。
如果我有一段代码:
@if (User.IsInRole("Administrator")) {
@Html.DropDownListFor(...)
}
因此只有管理员才能看到dropdownlistfor。
你如何对这种情况进行单元测试?
答案 0 :(得分:1)
这就是我要做的事情:
参见下面的示例(使用Rhino模拟)
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;
这将有助于您设置具有所有必需角色的控制器和当前用户。 我个人不会对视图进行单元测试,因为它应该很薄并且倾倒。你的大多数东西应该发生在控制器/业务层。
答案 1 :(得分:0)
如果您想对您的观看次数进行单元测试,我建议您查看the Razor Single File Generator。这将允许您预编译视图,并创建单元测试。