普通接口的单元测试
@SpringBootTestpublic class Chapter11ApplicationTests {private MockMvc mvc;@Beforepublic void setUp() {mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();}@Testpublic void getHello() throws Exception {mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andExpect(content().string(equalTo("Hello World")));}}
这里所用到的核心是MockMvc工具,通过模拟http请求的提交并指定相关的期望返回来完成。
对于文件上传接口,本质上还是http请求的处理,所以MockMvc依然逃不掉,就是上传内容发生了改变,只需要去找一下文件上传的模拟对象是哪个,就可以轻松完成。
具体写法如下:
@SpringBootTest(classes = Chapter43Application.class)public class FileTest {@Autowiredprotected WebApplicationContext context;protected MockMvc mvc;@BeforeEachpublic void setUp() {mvc = MockMvcBuilders.webAppContextSetup(context).build();}@Testpublic void uploadFile() throws Exception {MockMultipartFile file = new MockMultipartFile("file","hello.txt",MediaType.TEXT_PLAIN_VALUE,"Hello, World!".getBytes());final MvcResult result = mvc.perform(MockMvcRequestBuilders.multipart("/upload").file(file)).andDo(print()).andExpect(status().isOk()).andReturn();}}
可以看到MockMvc的测试主体是不变的,无非就是请求类型和请求内容发生了改变。
