Я пытаюсь написать тестовый пример для исключения исключения ввода-вывода, но не смог имитировать переменные в блоке попыток с ресурсами.
private byte[] convertDataToCSV() {
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream());
CSVPrinter printer = new CSVPrinter(writer, CSVFormat.DEFAULT
.withHeader(CSVHeaders.class))) {
printer.printRecord();
writer.flush();
byte[] bytes = outputStream.toByteArray();
return bytes;
}catch(IOException e){
//catch exception
}
}
Здесь я хочу имитировать OutputStreamWriter или CSVPrinter, чтобы Я могу выбросить IOException, когда он вызывает метод printRecord () или flu sh (). Но похоже, что он не использует макет.
OutputStreamWriter writer = mock(OutputStreamWriter.class)
CSVPrinter printer = mock(CSVPrinter.class)
doThrow(new IOException()).when(printer).printRecord() //didn't work
doThrow(new IOException()).when(writer).flush()//didn't work
Есть ли способ использовать фиктивные переменные вместо использования собственных объектов в блоке try с ресурсами с использованием mockito?