早上有個群友問了一個不錯的問題:檔案上傳的單元測驗怎么寫?后面也針對后端開發要不要學一下單元測驗的話題聊了聊,個人是非常建議后端開發能夠學一下單元測驗的,所以,今天特地拿出來寫一篇說說,并不是因為這有多難寫,而是作為出色的后端開發人員,單元測驗如果你能考慮周到,那么從代碼結構,程式質量上都會有很大的提升,而實際開發程序中,很少有開發人員會特別關注這個方面,
言歸正傳,下面我們具體說說當碰到需要上傳檔案的介面,我們要如何寫單元測驗!
先來回憶一下,普通介面的單元測驗我們是如何寫的?看看我們入門例子中的單元測驗:
@SpringBootTest
public class Chapter11ApplicationTests {
private MockMvc mvc;
@Before
public void setUp() {
mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
}
@Test
public 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 {
@Autowired
protected WebApplicationContext context;
protected MockMvc mvc;
@BeforeEach
public void setUp() {
mvc = MockMvcBuilders.webAppContextSetup(context).build();
}
@Test
public 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的測驗主體是不變的,無非就是請求型別和請求內容發生了改變,
今天的這篇很水,但是否會撰寫單元測驗以及能否寫好單元測驗,是很難看出一個后端開發水平的,所以,我是非常推薦大家能夠在撰寫業務實作的時候,先考慮一下自己的單元測驗是否方便寫,甚至先定義好介面,并寫好單元測驗,再去寫實作(傳說中的測驗驅動開發),
最近的分享到這里結束,有更多想法可來公眾號、星球或社群交流!
更多本系列免費教程連載「點擊進入匯總目錄」
代碼示例
本文的相關例子可以查看下面倉庫中的chapter4-3目錄:
- Github:https://github.com/dyc87112/SpringBoot-Learning/
- Gitee:https://gitee.com/didispace/SpringBoot-Learning/
如果您覺得本文不錯,歡迎Star支持,您的關注是我堅持的動力!
歡迎關注我的公眾號:程式猿DD,獲得獨家整理的免費學習資源助力你的Java學習之路!另每周贈書不停哦~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/247052.html
標籤:Java
上一篇:【專案實踐】一文帶你搞定頁面權限、按鈕權限以及資料權限
下一篇:Java介面的其他使用語法
