是否可以通过 URL 测试某个操作是否无法访问?

发布于 2024-10-29 13:13:59 字数 205 浏览 0 评论 0原文

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

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

I am using MvcContrib to write unit tests against our routing table in an MVC3 project. So far so good.

I would like to ensure that an action is only accessible "within" the application and that it cannot be routed to using a URL. The implementation is using the ChildActionOnly attribute to prevent access to this. I can test this manually and it works but is it possible to write a unit test that asserts that this URL is inaccessible?

Dan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤凫 2024-11-05 13:13:59

我不知道 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);
}

I am not aware of anything in MVCContrib TestHelper allowing to achieve this. You could always use reflection to test the presence of this attribute on the corresponding controller action.

[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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文