【发布时间】:2011-04-04 14:42:32
【问题描述】:
我正在使用 MvcContrib 针对 MVC3 项目中的路由表编写单元测试。到目前为止一切顺利。
我想确保操作只能在应用程序“内部”访问,并且不能使用 URL 路由到该操作。该实现使用ChildActionOnly 属性来阻止对其进行访问。我可以手动测试它并且它可以工作,但是是否可以编写一个单元测试来断言该 URL 不可访问?
丹
【问题讨论】:
我正在使用 MvcContrib 针对 MVC3 项目中的路由表编写单元测试。到目前为止一切顺利。
我想确保操作只能在应用程序“内部”访问,并且不能使用 URL 路由到该操作。该实现使用ChildActionOnly 属性来阻止对其进行访问。我可以手动测试它并且它可以工作,但是是否可以编写一个单元测试来断言该 URL 不可访问?
丹
【问题讨论】:
我不知道 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);
}
【讨论】: