springboot单元测试通过MockMvc类调用controller接口
生活随笔
收集整理的這篇文章主要介紹了
springboot单元测试通过MockMvc类调用controller接口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目前有個保存接口有問題,前端雙擊保存調用兩次接口,而生成ID策略是時間戳,這樣并發情況下導致重復,
于是想自己寫一個單元測試類,調用controller接口。在網上找了好幾個也不行,后來經過摸索,已實現,親測有效。
之前好多都是這樣的
private MockMvc mockMvc;@Autowiredprivate WebApplicationContext webApplicationContext;@Beforepublic void setUp() throws Exception{//MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,將會從該上下文獲取相應的控制器并得到相應的MockMvc;mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();//建議使用這種 }@Test。。。。。。
但是試了之后并沒有效果,而且經測試 :
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();//建議使用這種這行代碼完全不需要
下面是我的代碼: /*** @author chichenglong* @date 2019/6/14 10:29*/ @RunWith(SpringRunner.class) @SpringBootTest @WebAppConfiguration @AutoConfigureMockMvc public class ProjectRecipeControllerTest {@Autowiredprivate MockMvc mockMvc;// @Autowired // private WebApplicationContext webApplicationContext; // // @Before // public void setUp() throws Exception{ // //MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,將會從該上下文獲取相應的控制器并得到相應的MockMvc; // mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();//建議使用這種 // } @Testpublic void save() throws Exception{ProjectRecipeVo vo = new ProjectRecipeVo();ProjectRecipeDTO dto = new ProjectRecipeDTO();dto.setPatientNumber("1234564564");dto.setPatientId("YYHZ20190612LEEB");vo.setProjectRecipeDTO(dto);MvcResult mvcResult=mockMvc.perform(MockMvcRequestBuilders.post("/projectRecipe/save").content(FastJsonUtil.toJSONString(vo))).andReturn();int status=mvcResult.getResponse().getStatus();String content =mvcResult.getResponse().getContentAsString(); // Assert.assertEquals(200,status); // Assert.assertEquals("success",content);MvcResult mvcResultSecond=mockMvc.perform(MockMvcRequestBuilders.post("/projectRecipe/save").content(FastJsonUtil.toJSONString(vo))).andReturn();} }
重點注意下,@RunWith(SpringRunner.class)這個注釋一定要有,因為調用controller方法需要重啟一個controller,要運行,就需要一個端口,這個可以隨機開啟一個端口供測試用。
轉載于:https://www.cnblogs.com/deyujincheng/p/11022823.html
總結
以上是生活随笔為你收集整理的springboot单元测试通过MockMvc类调用controller接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现人脸识别“干货”
- 下一篇: ES6实现一些常见算法