![](/img/trans.png)
[英]Mock ExecutorService and Lambda expression for unit test in java
[英]Java: mock multipartfile in unit test
我正在嘗試模擬 MultipartFile,我想使用我在測試中創建的 stream 創建模擬
我也嘗試過沒有太多運氣的文件。 這是我到目前為止嘗試過的
FileInputStream stream = new
FileInputStream("MOCK_file.xlsm");
MultipartFile f1 = new MockMultipartFile("file1",stream);
MultipartFile[] files = {f1};
return files;
我得到一個 fileNotFoundException。 我應該將我的文件放在我的 Maven 項目中的什么位置,以便單元測試可以找到該文件?
- 或者 -
如何在不使用文件的情況下在代碼中創建 stream?
如何在不使用文件的情況下在代碼中創建 stream?
您可以使用ByteArrayInputStream
注入模擬數據。 對於少量數據來說非常簡單:
byte[] data = new byte[] {1, 2, 3, 4};
InputStream stream = new ByteArrayInputStream(data);
否則,您需要弄清楚您的代碼是從哪個目錄運行的,這取決於它的運行方式。 為了幫助解決這個問題,您可以打印user.dir
系統屬性,它會告訴您當前目錄:
System.out.println(System.getProperty("user.dir"));
或者,您可以使用完整路徑而不是相對路徑來查找文件。
把文件放進去
src/test/resources/MOCK_file.xlsm
從 JUnit class 讀取:
InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("MOCK_file.xlsm");
更好的是,您可以只模擬MultipartFile
,而您根本不需要InputStream
。
為此,您只需要做mock(MultiPartFile.class)
然后定義每個 function 將做什么
例如,如果您使用名稱
final MultipartFile mockFile = mock(MultipartFile.class);
when(mockFile.getOriginalFilename()).thenReturn("CoolName");
這樣,您將不必為實際文件而煩惱,也不必為意外響應而煩惱,因為您將定義它們
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.