springBoot項(xiàng)目文件上傳的單元測試

springBoot項(xiàng)目文件上傳的單元測試

被文件上傳的單元測試?yán)_了好久今天終于有時(shí)間研究一下了,話不多說直接上代碼。

代碼

//new一個(gè)資源上傳的對象
ResourceInfo resourceInfo = new ResourceInfo();
        resourceInfo.setResourceTitle("test");
        MockMultipartFile mockMultipartFile = new MockMultipartFile(
                "file",
                "hello.png",
                MediaType.IMAGE_PNG_VALUE,
                "".getBytes()
        );

        final MvcResult mvcResult = mvc.perform(
                MockMvcRequestBuilders
                        .multipart("/resourceUpload")
                        .file(mockMultipartFile)
                        .param("userId", "uesrId")
                        .contentType(MediaType.APPLICATION_JSON_VALUE)
                        .content(JSONUtil.toJsonStr(resourceInfo)))
                .andDo(MockMvcResultHandlers.print()).andReturn();

上面是一個(gè)普通的文件上傳的單測,簡單模擬了一個(gè)文件,但文件不是真是存在的,通過在 MockMultipartFile 對象中設(shè)置相應(yīng)的文件屬性就可以了。但是在通常的文件上傳中需要驗(yàn)證文件內(nèi)容,如讀取視頻文件的流、excel表格的數(shù)據(jù)等;這時(shí)候簡單的模擬已經(jīng)不能滿足數(shù)據(jù)需求,這時(shí)候就需要將真實(shí)的測試文件放上去;作為洗個(gè)小白,一直在摸索中前進(jìn),一直困于如何讀取到文件和如何將讀取的文件轉(zhuǎn)換成 MultipartFile 文件對象。這里很簡單,只需要將文件放到 main 文件夾下的 resource 文件夾下即可。

image.png

放好了文件就可以讀取了,這里使用xxx.class.getResource("/file/hk.mp4")讀取文件,我是直接使用的單元測試類的類名。下面給出完整示例:


//new一個(gè)資源上傳的對象
ResourceInfo resourceInfo = new ResourceInfo();
        resourceInfo.setResourceTitle("test");
        //讀取文件 "file/hk.mp4"
        File file = new File(ResourceInfoTest.class.getResource("/file/hk.mp4").getFile());
        FileInputStream inputStream = new FileInputStream(file);
        MockMultipartFile mockMultipartFile = new MockMultipartFile(
                "file",
                "hello.png",
                MediaType.IMAGE_PNG_VALUE,
                inputStream
        );
        final MvcResult mvcResult = mvc.perform(
                MockMvcRequestBuilders
                        .multipart("/resourceUpload")
                        .file(mockMultipartFile)
                        .param("userId", "user1")
                        .contentType(MediaType.APPLICATION_JSON_VALUE)
                        .content(JSONUtil.toJsonStr(resourceInfo)))
                .andDo(MockMvcResultHandlers.print()).andReturn();

到這就寫完了,可以去跑單測了,雖然不是使用mock來做的但是能簡單實(shí)現(xiàn)代碼覆蓋啦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容