2016-11-29 1 views
11

Scala.jsユニットテストでは、test/resourcesにあるファイルからテストデータをロードする最も簡単なソリューションは何ですか?ユニットテストScala.js: `test/resources`にあるファイルからテストデータを読み込みます

+0

ここで問題となるのは 'fs'操作は非同期ですが、テストフレームワークに知られている' ExecutionContext'では実行されません。プロミスから未来を構築するだけでは機能しません - [ScalaTest issue#1039](https://github.com/scalatest/scalatest/issues/1039) – Suma

+0

複製:http://stackoverflow.com/questions/40291805/どのようにしてリソースファイルを読み込みますか? – Rich

+1

@Richそれと似ていますが、テストでは非同期操作の処理に関する特定の問題があります。 – Suma

答えて

2

最近のScala.js(0.6.14と0.6.15がテスト済み)とNode.js(7.8.0がテスト済み)では、状況は単純です。デフォルトでノードランナーを使用してテストが実行されるので、Node.js同期ファイル操作を使用してfs readFileSyncを使用してファイルを読み取ることができます。ファイルは、SBTのビルドによってそこにコピーされる代わりにsrc/test/resourcesから直接それらをロードする

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") 

、1もtarget/scala-2.12/test-classesからそれらを読み込むことができます:これを処理する機能は次のように見ることができます。私はこのパスを取得する方法をいくつか簡単なAPIを見つけることができる場合は、これを好むと思うので、関数でハードコードする必要はありません。

関連する問題