Я создаю объект-макет файла с Mockito, который будет использоваться как каталог для хранения нового файла.
Folder folder = Mockito.mock(File.class);
File file = new Agent().createNewFile(folder, "fileName");
и внутри моего класса агента:
public File createNewFile(File folder, String filename){
return new File(folder, "testfile");
}
Но я получаю исключение NullPointerException в блоке инициализации File при создании нового файла внутри метода createNewFile
:
java.lang.NullPointerException at java.io.File.<init>(File.java:308)
Я думаю, что это происходит потому, что File не у него нет пустого конструктора, поэтому при издевательстве над объектом какое-то внутреннее состояние остается нулевым.
Неправильно ли я насмехаюсь над объектом Папка с файлами
? Моя цель - проверить некоторые ограничения перед созданием нового файла, но я не хочу зависеть от существующей реальной папки в файловой системе.
Спасибо.
Вам необходимо определить поведение getPath () для папки, когда она вызывается изнутри. в классе File.
Вы можете сделать это так:
File folder = Mockito.mock(File.class);
when(folder.getPath()).thenReturn("C:\temp\");
File file = new Agent().createNewFile(folder, "fileName");
Это будет работать только до тех пор, пока вы действительно не создадите новый файл, а только вызовете new File.