Я успешно использовал Specs2 для тестирования сериализации в файл, но в тесте используется реальный файл (записанный в/tmp /). Я бы предпочел не касаться диска только для теста. Есть ли способ использовать насмешливый файл?Могу ли я использовать файл mock в моем тесте Specs2 для записи в файл? Если да, то как?
def serializeAndDeserializeFromDatafile[X <: CaseClass : Manifest](old: X, maybeGrater: Option[AvroGrater[X]] = None): X = {
val g = maybeGrater.getOrElse(grater[X])
//val outfile = mock[File]
val outfile = new File("/tmp/file1.avro")
g.serializeToDataFile(outfile, old) //Serialize to file
val infile = outfile
g.asObjectFromDataFile(infile) //Deserialize from file
}
Я попытался с помощью Mockito издеваться мой outfile
(в закомментированной строке выше). В моей наивной попытке я могу создать Mock for File, hashCode: 1583021903
, но, кажется, это null
, когда я пытаюсь сериализовать.
Я думаю, что мне не хватает «заглушки», но я не могу найти примеров, которые достаточно похожи, чтобы предложить решение. Любая помощь будет оценена по достоинству.
Удивительный, спасибо.Это то, на что я надеялся, но я быстро споткнулся: 'val fs = new RamFileSystem (separator ="/") println (" filesys: "+ fs) val path = fs ("/tmp/", '/ «) Println ("путь:" + путь) Println ("ISFILE "+ path.isFile) вал mockedFile = path.createFile() Println (" mockedFile" + mockedFile) Println ("ISFILE" + mockedFile.isFile) val outfile = mockedFile.fileOption println ("outfile:" + outfile) 'говорит мне, что' mockedFile' является файлом, но 'outfile: Option [File]' является 'PathType', таким образом возвращая' None' вместо необходимого 'java.io.File' –
Просим прощения за форматирование. tl; dr: Должен ли я ожидать получить «java.io.File» от такого рода макета (например, «RamPath»)? –
№ Как это могло быть? Для этого потребуется драйвер файловой системы на уровне ОС. Но ScalaIO - намного более богатый API для операций ввода-вывода и файлов. –