如何测试只能通过HTTP POST访问MVC操作?

时间:2012-12-20 13:47:09

标签: asp.net-mvc asp.net-mvc-3 mvccontrib mvccontrib-testhelper

我正在使用MvcContrib-TestHelper来测试我的应用上的路由。我有一个仅限HTTP POST的操作:

public TestController
{
    [HttpPost]
    public ActionResult Example()
    {
        return View();
    }
}

以下是一个应该失败的测试示例:

[TestFixture]
public class RoutingTests
{
    [TestFixtureSetUp]
    public void TestFixtureSetUp()
    {
        RouteTable.Routes.Clear();
        Application.RegisterRoutes(RouteTable.Routes);
    }

    [Test]
    public void TestWithGet()
    {
        var route = "~/Test/Example".WithMethod(HttpVerbs.Get);
        route.ShouldMapTo(r => r.Example());
    }
}

然而,测试通过了!我已经看到了另一个未解决的问题(对不起,错误的链接),这也引发了这个问题,似乎功能被打破了。有什么更好的方法来测试这条路线只能通过POST访问?

2 个答案:

答案 0 :(得分:2)

看起来你只是想在那里测试ASP.NET MVC框架。我不认为这样的测试会带来价值......

答案 1 :(得分:1)

使用此代码:

var controller = new HomeController();
var methodInfo = controller.GetType().GetMethod("MrthodName");
var attributes = methodInfo.GetCustomAttributes(typeof(ActionMethodSelectorAttribute), true).Cast<ActionMethodSelectorAttribute>().ToList();

属性 - 这是列表接受动词