FileInputStream
を使用するメソッドにはJUnit
と書いています。constructor
では、ファイル名だけが渡されます。このファイルはサーブレット要求の一部として作成され、このファイルはどこにも格納されません。既存のファイルを持たずにMockito/PowerMockitoを使ってMockito/PowerMockitoをモックする
Mock
FileInputStream
PowerMockito
を使用して、私に模擬ファイルオブジェクトを与えようとしています。残念ながらFileNotFoundException
が有効ですが、ファイルが存在しないためこのメソッドをテストする方法がわかりません。テスト中の
方法:これまで
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
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();
}
コードが助けをnew FileInputStream(DOCUSIGN_REPORT_FILE);
おかげに達したとき、私はexception
を取得します。
通常の注意点:(依存性注入と一緒に)工場を使用している場合、新しいものへの呼び出しを模擬するためにPowermockは必要ありません。 – GhostCat
あなたはSpringを使ってFileInputStreamを注入すべきですか? – Jaykumar
あなたのコードが何かを読むことができるファイルがない場合、あなたのテストは実際にテストしますか? –