Тест метода, который читает данные из файла (надо использовать mock)
Прохожу обучение по Java. У меня в проекте есть функция readData(filePath), которая читает текст из файла и возвращает лист строк. Для её тестирования создаю в тесте файл с данными, на нём собственно и тестирую функцию. Но мне сказали, что надо использовать моки. Я погуглил, посмотрел примеры использования, но так и не понял, как применить к моему тесту. Подскажите, пожалуйста, как это сделать. Ниже мой тест и метод.
public class CubeDataReaderTest {
File testFile;
CubeDataReader cubeDataReader;
@BeforeClass
public void setUp() throws CustomException {
testFile = new File("testData.txt");
cubeDataReader = new CubeDataReader();
try (FileWriter fileWriter = new FileWriter(testFile)) {
fileWriter.write("1.0 2.0 3.0 4.0");
} catch (IOException ex) {
throw new CustomException("Data is not written.");
}
}
@AfterClass
public void tierDown() {
testFile.delete();
}
@Test
public void readDataPositiveTest() throws CustomException {
List<String> expected = new ArrayList<>();
expected.add("1.0 2.0 3.0 4.0");
String filePath = testFile.getPath();
List<String> actual = cubeDataReader.readData(filePath);
Assert.assertEquals(expected, actual);
}
@Test(expectedExceptions = CustomException.class)
public void readDataNegativeTest() throws CustomException {
cubeDataReader.readData("notExistingFile.txt");
}
}
public class CubeDataReader {
static Logger logger = LogManager.getLogger();
public List<String> readData(String filePath) throws CustomException {
List<String> lines;
try (FileReader fileReader = new FileReader(filePath);
BufferedReader bufferedReader = new BufferedReader(fileReader)) {
lines = bufferedReader.lines().collect(Collectors.toList());
logger.info("File was read");
} catch (FileNotFoundException e) {
logger.error("File not found.", e);
throw new CustomException("File not found.", e);
} catch (IOException e) {
logger.error("Cannot read file.", e);
throw new CustomException("Cannot read file.", e);
}
return lines;
}
}