當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring MVC 测试 | 模拟提交表单
生活随笔
收集整理的這篇文章主要介紹了
Spring MVC 测试 | 模拟提交表单
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在 Spring 4 MVC 單元測試例子 一文中利用Spring test 框架進行了簡單的測試,代碼mockMvc.perform(get("/SayHello/getAnswer"))使用get()方法發送了一個GET請求。
現在需求變了,需要提交一個表單,該如何實現?
首先,要測試下面這樣一個方法:
@Controller @RequestMapping("/user") public class UserController {@RequestMapping(method = RequestMethod.POST)@ResponseStatus( HttpStatus.CREATED )public void addUser(@Validated User user,BindingResult result,HttpServletResponse response) throws BindException{//省去代碼}}注意它要接收一個User類對象作為參數,User類如下:
@Component public class User {private long id;private String name;//省去getter和setter }模擬請求中要如何攜帶這樣的參數呢?是創建一個User對象,添加到請求中嗎?實際,測試類應該這樣編寫:
@RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(locations={"classpath:spring-servlet.xml","classpath:applicationContext.xml"}) public class UserControllerTest {@Autowiredprivate WebApplicationContext wac;private MockMvc mockMvc;@Beforepublic void Setup(){this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();}@Testpublic void testAddUser() throws Exception { mockMvc.perform(post("/user").param("id", "1")) //注意這行.andDo(print()).andExpect(status().is(201)).andExpect(redirectedUrl("/user/1"));}}從上面的代碼中可以看出,post()方法可以像post("/user").param("id", "1")這樣加入表單參數,要加多個參數,post()方法后面就可以加多個param()方法。只要param()方法添加的參數的名字和User類的屬性名字相同即可。
這里使用的Spring框架版本號是4.2.4,3.x版本的測試可能與這個有所差別。
國外有網友也有遇到同樣的問題,貼出實例代碼,可以參看:Set @ModelAttribute in MockHttpServletRequest in JUnit Test
總結
以上是生活随笔為你收集整理的Spring MVC 测试 | 模拟提交表单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue路由传参的三种基本方式 - 流年的
- 下一篇: linux命令unzip,linux u