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