首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你在你的单元测试中检查HttpVerbs吗?

你在你的单元测试中检查HttpVerbs吗?
EN

Stack Overflow用户
提问于 2009-06-25 10:26:13
回答 4查看 363关注 0票数 1

在查看标准ASP.MVC Web Project模板附带的单元测试时,我注意到这些测试不会测试是否在每个操作方法上设置了适当的HttpVerbs属性。

用反射测试这一点很容易,但问题是它是否值得付出努力。您是在单元测试中检查HttpVerbs,还是将其留给集成测试?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-15 22:14:21

如果其他人发现这个问题:我已经开始在我的单元测试中检查我的所有操作方法接受属性。稍微反思一下就可以很好地解决这个问题。如果你也想这样做,这里有一些代码:

代码语言:javascript
复制
protected void CheckAcceptVerbs<TControllerType>(string methodName, HttpVerbs verbs)
{              
    CheckAcceptVerbs(methodName, typeof(TControllerType).GetMethod(methodName, BindingFlags.Public|BindingFlags.Instance,null,new Type[]{},null), verbs);
}

protected void CheckAcceptVerbs<TControllerType>(string methodName, Type[] ActionMethodParameterTypes, HttpVerbs verbs)
{
    CheckAcceptVerbs(methodName, typeof(TControllerType).GetMethod(methodName, BindingFlags.Public | BindingFlags.Instance, null, ActionMethodParameterTypes, null), verbs);
}

private void CheckAcceptVerbs<TControllerType>(string methodName, MethodInfo actionMethod, HttpVerbs verbs)
{
    Assert.IsNotNull(actionMethod, "Could not find action method " + methodName);
    var attribute =
        (AcceptVerbsAttribute)
        actionMethod.GetCustomAttributes(false).FirstOrDefault(
            c => c.GetType() == typeof(AcceptVerbsAttribute));


    if (attribute == null)
    {
        Assert.AreEqual(HttpVerbs.Get, verbs);
        return;
    }

    Assert.IsTrue(HttpVerbsEnumToArray(verbs).IsEqualTo(attribute.Verbs));
}

第一种方法是不带参数的action方法,第二种方法是带参数的action方法。您也可以直接使用第三种方法,但我将前两个重载编写为方便的函数。

票数 1
EN

Stack Overflow用户

发布于 2011-02-07 06:00:18

您还可以使用MvcContrib.TestHelper通过操作测试路由。

代码语言:javascript
复制
    [TestMethod]
    public void ShouldConfirmRouteForNewObjectWithPost()
    {
        "~/Object/New".WithMethod(HttpVerbs.Post).ShouldMapTo<ObjectController>(x => x.New());
    }
票数 2
EN

Stack Overflow用户

发布于 2009-06-26 11:39:31

对于我来说,我总是在我的控制器中检查每个动作的正确的AcceptVerbsAttribute。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1043129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档