【发布时间】:2010-12-25 00:50:55
【问题描述】:
我已经搜索了 stackoverflow 并在谷歌上搜索了四个小时,但仍然没有找到任何解决我的“琐碎”问题的方法。
如果您为过滤后的[Authorize] ActionResult 编写单元测试,您如何解决伪造该用户已通过身份验证的问题?
我有很多用[Authorize] 过滤的ActionResult 方法,我想测试我所有的ActionResult 方法,无论它们是否用[Authorize] 过滤。
我的意思的一个简单例子:
[TestMethod]
public void Create_Get_ReturnsView()
{
// Arrange
var controller = new UserController();
// Act
var result = controller.Create();
// Assert
Assert.IsNotNull(result as ViewResult);
}
[Authorize]
public ActionResult Create()
{
return View("Create");
}
到目前为止,由于 [Authorize] 过滤器,测试甚至没有命中 ActionResult 方法,抛出的异常是:System.NullReferenceException: Object reference not set to an instance of an object.
【问题讨论】:
-
有些东西你没有给我们看。您显示的测试不会执行 any 操作过滤器。也许您有可以使用的代码,但这不在您的问题之内。对于初学者来说,错误的整个调用堆栈怎么样?
标签: asp.net-mvc unit-testing authorization