我已成功使用 Specs2 测试文件的序列化,但测试使用真实文件(写入/tmp/)。我宁愿不只是为了测试而触摸磁盘。有没有办法使用模拟文件?
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
。
我认为我缺少某种“ stub ”,但我找不到任何足够相似的示例来提出解决方案。任何帮助,将不胜感激。
最佳答案
我有一个程序(使用 Akka 编写的自主程序),广泛处理文件系统操作。我使用 ScalaIO(而不是 native Java 库 java.io._
类)编写它。 ScalaIO 包括 RamFileSystem
等,它允许您以镜像真实文件系统操作的方式模拟文件系统内容和操作,而无需涉及文件系统和 I/O 系统调用。
关于scala - 我可以在 Specs2 测试中使用模拟文件写入文件吗?如果是这样,怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15379018/