在Scala.js单元测试中,从test/resources
中的文件加载测试数据的最简单的解决方案是什么?
答案 0 :(得分:4)
事实证明,至少在最近的Scala.js(0.6.14和0.6.15测试)和Node.js(7.8.0测试)的情况下,情况很简单。由于默认情况下使用Node runner运行测试,因此可以使用Node.js同步文件操作并使用fs readFileSync读取文件。处理此问题的函数可能如下所示:
def rscPath(path: String): String = "src/test/resources/" + path
def rsc(path: String): String = {
import scalajs.js.Dynamic.{global => g}
val fs = g.require("fs")
def readFile(name: String): String = {
fs.readFileSync(name).toString
}
readFile(rscPath(path))
}
val testInput = rsc("package/test-input.txt")
除了直接从src/test/resources
加载它们之外,还可以从target/scala-2.12/test-classes
加载它们,因为SBT构建将文件复制到那里。如果我能找到一些简单的API来获取这条路径,我想我更喜欢这个,所以它不必在rscPath
函数中进行硬编码。