是否可以通过URL测试Action无法访问?

时间:2011-04-04 14:42:32

标签: asp.net-mvc-3 mvccontrib

我正在使用MvcContrib在MVC3项目中针对我们的路由表编写单元测试。到目前为止一切都很好。

我想确保操作只能在应用程序“内”访问,并且无法使用URL进行路由。该实现使用ChildActionOnly属性来阻止对此的访问。我可以手动测试它并且它可以工作但是是否可以编写一个单元测试来断言这个URL是不可访问的?

1 个答案:

答案 0 :(得分:2)

我不知道MVCContrib TestHelper允许实现此目的。您始终可以使用反射来测试相应控制器操作上是否存在此属性。

[TestMethod]
public void Index_action_on_home_controller_is_a_child_action_only() 
{
    Expression<Func<HomeController, ActionResult>> ex = c => c.Index();
    var mce = (MethodCallExpression)ex.Body;
    var atts = mce.Method.GetCustomAttributes(typeof(ChildActionOnlyAttribute), false);
    Assert.IsTrue(atts.Length > 0);
}