springboot单元测试通过MockMvc类调⽤controller接⼝
⽬前有个保存接⼝有问题,前端双击保存调⽤两次接⼝,⽽⽣成ID策略是时间戳,这样并发情况下导致重复,
于是想⾃⼰写⼀个单元测试类,调⽤controller接⼝。在⽹上了好⼏个也不⾏,后来经过摸索,已实现,亲测有效。
之前好多都是这样的
private MockMvc mockMvc;
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public 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 {
@Autowired
private MockMvc mockMvc;
// @Autowired
// private WebApplicationContext webApplicationContext;
//
/
/ @Before
// public void setUp() throws Exception{
////MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,将会从该上下⽂获取相应的控制器并得到相应的MockMvc;// mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();//建议使⽤这种
// }
@Test
public 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")spring boot选择题
.JSONString(vo)))
.andReturn();
int Response().getStatus();
String content =Response().getContentAsString();
// Assert.assertEquals(200,status);
// Assert.assertEquals("success",content);
MvcResult mvcResultSecond=mockMvc.perform(MockMvcRequestBuilders.post("/projectRecipe/save")
.JSONString(vo)))
.andReturn();
}
}
重点注意下,@RunWith(SpringRunner.class)这个注释⼀定要有,因为调⽤controller⽅法需要重启⼀个controller,要运⾏,就需要⼀个端⼝,这个可以随机开启⼀个端⼝供测试⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论