我試圖覆蓋處理文件的代碼。我試圖避免使用真實文件進行測試,所以我使用Mockito。 這是我想測試代碼:Junit - 模擬一個文件
try {
byte[] data = Files.readAllBytes(((File) body).toPath());
immutableBody = data;
actualHeaderParams.put(HttpHeaders.CONTENT_LENGTH, (new Integer(data.length)).toString());
contentType = MediaType.APPLICATION_OCTET_STREAM;
}
我使用的是模擬文件:
File mockedFile = Mockito.mock(File.class);
,但我得到「toPath」異常。所以我添加了一些路徑或null,但是然後我再次得到Exceptions,因爲文件不存在於路徑中。
when(mockedFile.toPath()).thenReturn(Paths.get("test.txt"));
越來越:
com.http.ApiException: There was a problem reading the file: test.txt
有沒有辦法做,而無需創建用於測試一個真正的文件?
找到一種方法來傳遞內容,並且將您碰巧從文件中讀取的事實外化。更改方法簽名以移出字節源。 – duffymo
它通常更容易使用'@Rule public TemporaryFolder folder = new TemporaryFolder()'並且創建你需要的「假」文件內容。嘲笑文件可能會非常快速地變得痛苦。 – cjstehno