我需要检查某些网址是否只有特定的http方法。 例如,如果有这样的控制器
@Controller
public class FooController {
@RequestMapping(value = "bar", method = RequestMethod.GET)
public void bar() {/*do something*/};
...
}
对于控制器测试,我使用junit(4.10),spring-test(3.2.10)和easymock(3.1)。 如果我像这样写测试
@Test
public void testBar() throws Exception {
mockMvc.perform(post("bar").session(session))
.andExpect(/*some application's default error response*/);
}
它将通过(尽管测试调用post-method,而不是get-method)。
所以我正在寻找一种正确的方法来确保我的其余资源只能通过文档中指定的请求方法获得。我想到了两个解决方案:
您会建议什么以及如何检查控制器测试请求方法?
提前致谢。
答案 0 :(得分:3)
您需要检查所有请求方法的状态,您可以使用andExpect
status().isMethodNotAllowed()
或status().isNotFound()
来执行此操作,具体取决于您的需求:
示例:
mockMvc.perform(get("bar").andExpect(status().isNotFound())
或mockMvc.perform(get("bar").andExpect(status().isMethodNotAllowed())
对put
,delete
,....