【问题标题】:Testing DELETE using spring-test-mvc使用 spring-test-mvc 测试 DELETE
【发布时间】:2012-10-10 20:47:32
【问题描述】:

我正在使用 Spring MVC 创建 RESTful 端点。我正在使用 spring-test-mvc 在单元/集成测试级别测试它们。我现在遇到了这个团队第一次尝试使用 DELETE 实现端点。这意味着需要设置容器以允许 DELETE(PUT 将在不久之后出现)。我的研究把我带到了这里:

http://www.codereye.com/2010/12/configure-tomcat-to-accept-http-put.html

从技术上讲,我正在使用 JBoss,但我感觉 Tomcat 的文章就可以了。无论如何,我的问题不在容器级别。

我正在尝试创建一个单元测试来验证最基本的 404。假设您尝试删除调用 /users/{id} 的用户。我的测试通过了一个无效的 id,我希望返回 404。它给出了 405。当不支持 DELETE 时,这是有道理的。按照上面链接中的说明,我应该在 web.xml 中添加一些条目。我在主要和测试中这样做了。两者仍然给了我 405。

如何设置 spring-test-mvc 以从 web.xml 或其他位置获取这些新的 http 方法类型?除了最初不支持 DELETE 之外,我的研究没有提出任何建议。

谢谢 达斯汀

【问题讨论】:

    标签: spring-mvc jboss junit tdd spring-test-mvc


    【解决方案1】:

    Spring-test-mvc 确实支持 DELETE(和 PUT),我已经将它与基于 DELETE 的方法一起使用,确实需要在 web.xml 中添加 HiddenHttpMethodFilter 过滤器,以便 DELETE http 方法在您的应用程序,但是 spring-test-mvc 不查看过滤器,它从 DispatcherServlet 向下工作,这是对我有用的示例之一:

        mockMvc.perform(delete("/members/1").contentType(MediaType.APPLICATION_JSON))
            .andExpect(status().isOk());
    

    您看到的错误我觉得可能与content-typeaccept headers 更相关,这是我看到返回 405 的地方,您可以将日志级别更改为调试或跟踪,看看是什么否则会出现。

    【讨论】:

    • 我讨厌你是对的。它最终与各种映射有关。很高兴知道我最初不需要对 web.xml 大惊小怪。谢谢。
    猜你喜欢
    • 2013-12-21
    • 2013-05-16
    • 2013-09-03
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2013-10-06
    • 2012-11-01
    • 1970-01-01
    相关资源
    最近更新 更多