scala - 我可以在 Specs2 测试中使用模拟文件写入文件吗?如果是这样,怎么办?

标签 scala testing mocking mockito specs2

我已成功使用 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/

相关文章:

scala - 如何在 Gatling 中动态生成 JSon?

regex - Scala正则表达式替换为匿名函数

c# - 如何使用 content-desc 单击按钮

testing - 如何测试信用卡电子商务软件?

python - 模拟/修补对象属性以测试方法

c# - 单元测试。为什么 Mock 在第二次循环迭代中返回不同的值?

scala - Play Framework 2.0 多条静态路由

Java同步死锁?

android - 使用 ProGuard,对测试策略有何影响?

python - 断言在特定实例上调用了 PropertyMock