【问题标题】:Is it possible to test that an Action is Unreachable via a URL?是否可以通过 URL 测试操作是否无法访问?
【发布时间】:2011-04-04 14:42:32
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net-mvc-3 mvccontrib


    【解决方案1】:

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

    【讨论】:

    • 喜欢这个实现。但你让我思考我真正想要的是什么。我不喜欢测试方法属性是否存在的想法,但显然这就是我在最初的问题中提出的问题。鉴于此,我将修改问题。干杯。
    猜你喜欢
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多