2016-05-19 128 views
0

hw嘲笑以下特別是listfiles()方法?嘲笑文件對象Mockito或Powermock?

File folder = new File(folderPath); 
for (File fileEntry : folder.listFiles()) { 
    try { 
     if (StringUtils.isBlank(fileEntry.toString())) { 
      throw new ConfigurationException("Sfile must be set"); 
     } 

     String json = resourceReader.readResource(fileEntry.toString()); 
     try { 
      config.add(parser.parseJson(json)); 
     } catch (Exception e) { 
      LOG.error("Error in parsing json"); 
     } 
    } catch (Exception e) { 
     throw new ServiceException("Could not parse sfrom the file: " + 
       fileEntry.getName(), e); 
    } 
} 
+0

剛回來一些'Iterable ''有什麼問題?你遇到的確切問題是什麼? – Turing85

+0

我正在做這樣的事情。 @Mock File mockFile = Mockito.mock(File.class); File [] files = {admin,database}; Mockito.when(mockFile.listFiles())。然後返回(文件); – Yahiya

+0

如果你正在使用Powermock,你可以在調用'new File(...)'時返回一個模擬'File'。或者你可以改變你的代碼來讓工廠返回你的文件(或者作爲參數傳遞它,然後你可以從你的單元測試中通過模擬並嘲笑'listFiles') – BretC

回答

0

假設您在測試目錄中有一些文件或添加一些.txt或任何文件。然後,如果您正在使用Mockito,請將這些語句寫入測試類。你需要添加import static org.mockito.Mockito.when;在ATEST類

File f = new File("c:/test"); 
File[] files = f.listFiles(); 
when(folder.listFiles()).thenReturn(files); 

通過這一點,你是在告訴測試方法去實際類的for循環內,您可能需要編寫一些更多的時候(thisHappens).thenReturn(givemethisresult);聲明。