我想单元测试剃刀视图。特别是,我试图编写一个管理员按钮 - 如果用户登录时显示在主工具栏上是一个管理员。MVC .NET - 将用户模型传递给剃刀视图
目前我们没有任何测试,它的工作方式是设置一个名为CurrentUser的静态对象。
剃刀:
@if CurrentUser.IsAdmin()
{
<button>admin</button>
}
然而,由于我们正在调用CurrentUser - 静态对象在项目中的其他地方设置,我不知道,如果我们不能单元测试这个Razor视图独立。我想我们必须制作一个User对象,让用户登录一个实例,然后将其注入到剃须刀视图中。
例如。
Controller
{
ActionResult Index(){
var currentUser = //somehow get current user
return View(currentUser);
}
但是如果我测试的剃须刀视图是_Layout页面呢?当我渲染页面时,是否需要注入当前用户?
有没有一种方法可以将当前用户注入View的父级?也许我必须重写View方法?有任何想法吗?
谢谢!
如果你有身份验证,您可以在视图中使用: @if User.IsInRole(“管理”) 而不是静态类CurrentUser。 –
是true,但User仍然是一个静态对象。为了设置我的测试 - 我怎样才能设置一个假的用户登录,恰巧是一个管理员 - 这样我可以测试我的按钮是否出现(测试通过)或不出现(测试失败)。你懂我的意思吗? – Karan