Ich schreibe eine JUnit
für eine Methode, die FileInputStream
verwendet und in der constructor
nur der Dateiname übergeben wird. Die Datei wird als Teil einer Servlet-Anforderung erstellt und diese Datei wird nirgendwo gespeichert.Mock FileInputStream mit Mockito/PowerMockito ohne eine vorhandene Datei
Ich versuche Mock
FileInputStream
mit PowerMockito
, so dass es mir ein verspottetes Dateiobjekt gibt. Leider bekomme ich FileNotFoundException
das ist gültig, aber ich bin mir nicht sicher, wie man diese Methode dann testet, weil die Datei nicht existiert.
Methode im Test:
public String viewReport() throws Exception {
this.inputStream = new FileInputStream(DOCUSIGN_REPORT_FILE);
try {
boolean returnReport = validateRequest();
if (returnReport) {
intgList = this.generateViewIntegrationReportData(getESignUIConfig());
this.createCSVFile(intgList, new FileWriter(DOCUSIGN_REPORT_FILE));
} else {
failureResponse(msgs, 400);
return null;
}
} catch (Exception e) {
e.printStackTrace();
msgs.add(new Message(ESignatureIntegrationMessageTypeEnum.MESSAGE_TYPE_ERROR,
UiIntegrationKeyConstants.UI_INTEGRATION_ERROR_CODE_500, UiIntegrationKeyConstants.UI_INTEGRATION_ERROR_TEXT_SERVICE_ERROR));
failureResponse(msgs, 500);
return null;
}
return UiIntegrationKeyConstants.REPORT_REPSONSE;
}
JUnit-Test so weit.
@Test
public void testViewReport() throws Exception {
Map<String, Object> actionMap = new HashMap<>();
actionMap.put("application", "ESignatureIntegrationAction");
ActionContext.setContext(new ActionContext(actionMap));
FileInputStream inputStream = Mockito.mock(FileInputStream.class);
PowerMockito.whenNew(FileInputStream.class).withAnyArguments().thenReturn(inputStream);
action = new ESignatureIntegrationAction();
action.viewReport();
}
Ich erhalte eine exception
, wenn der Code zu new FileInputStream(DOCUSIGN_REPORT_FILE);
für die Hilfe
Dank erreicht.
Der übliche Vorbehalt: Wenn Sie eine Fabrik (zusammen mit Abhängigkeitsinjektion) verwenden würden ... dann würden Sie Powermock nicht brauchen, um einen Anruf zu neuem zu verspotten. – GhostCat
Sie meinen, ich sollte FileInputStream mit Spring injizieren? – Jaykumar
Was würde Ihr Test tatsächlich testen, wenn es keine Datei gibt, aus der Ihr Code etwas lesen kann? –