【发布时间】:2010-02-17 15:50:29
【问题描述】:
完成这项工作的机制并不难,但测试它有点奇怪。场景是我想基于基本控制器(一个 IPrincipal 对象)的 User 属性将一些基本用户数据转储到视图数据中,以便母版页始终拥有它。我需要访问我的 IUserManager(一个服务类),它由控制器工厂中的自定义 DI 提供。模拟用户对于测试来说是没有问题的。但是,为基本控制器中的每个操作实现此目的的最简单方法是通过覆盖 OnAuthorization 方法来实现。基类如下所示:
public abstract class BaseController : Controller
{
public BaseController(IUserManager userManager)
{
UserManager = userManager;
}
public IUserManager UserManager { get; private set; }
protected override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
UserManager.SetupUserViewData(User, ViewData);
}
}
问题是我无法在测试中找到触发 OnAuth 方法的方法。我想在我的模拟 UserManager 中验证 SetupUserViewData 是否被调用。我没有使用自定义过滤器,因为我没有成熟的依赖注入框架(过滤器需要获取 IUserManager)。
有什么建议吗?由于这将在任何地方使用,我想正确进行测试。
【问题讨论】:
标签: asp.net-mvc controller master-pages