日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring MVC 测试 | 模拟提交表单

發布時間:2023/12/10 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 测试 | 模拟提交表单的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。