MVC可以在模型中访问HttpContext.Current.User以及如何测试

时间:2012-04-22 20:44:06

标签: asp.net-mvc unit-testing

在我的一个模型类中我有属性:

public virtual bool OkToChangeApprovedForPayment
        {
            get
            {
                return ExportedDateTime == null && PMApproved == true && HttpContext.Current.User.IsInRole(Resources.Roles.VectorOpsAdmin);
            }
        }

正如您所看到的,其中一个条件是测试用户所处的角色。是否可以像这样访问模型中的HttpContext?如果不是更好的方法呢?

如果没问题,你会如何进行单元测试呢?你如何替换对HttpContext的调用?

1 个答案:

答案 0 :(得分:2)

这是安全的(当然,如果你的模型在正在运行的请求的上下文中执行)。

但是,很难测试。您可以将HttpContextBase的实例注入到更适合测试的模型中。