2016-11-29 25 views
11

Scala.js birim testinde, test verilerini test/resources'da bulunan bir dosyadan yüklemek için en kolay çözüm hangisidir?Birim testi Scala.js: 'Test/resources' içinde bulunan dosyadan test verilerini oku Okuma

+0

Burada biraz sorun, 'fs' işlemleri eşzamansızdır, ancak sınama çerçevesi tarafından bilinen bir" ExecutionContext "üzerinde yürütülmezler. Sadece bir Sözün Geleceğinin Oluşturulması işe yaramaz - bkz. [ScalaTest issue # 1039] (https://github.com/scalatest/scalatest/issues/1039) – Suma

+0

http://stackoverflow.com/questions/40291805/ kopyası nasıl-oku-a-kaynak-dosya-in-scala-js? – Rich

+1

@Rich Benzer, ancak testler uyumsuzluk işlemlerinin ele alınmasıyla ilgili belirli konuları getirir. – Suma

cevap

2

En azından son Scala.js (test edilen 0.6.14 ve 0.6.15) ve Node.js (7.8.0 test edilmiş) ile durumun basit olduğu ortaya çıkıyor. Testler varsayılan olarak Node runner kullanılarak çalıştırıldığı için, Node.js sync dosya işlemlerini kullanabilir ve dosyayı fs readFileSync kullanarak okuyabilir. dosyalar SBT yapı tarafından oraya kopyalandığı olarak yerine src/test/resources bunları doğrudan yüklenmesi

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

, bir de target/scala-2.12/test-classes onları yükleyebilir: Bu işleme bir fonksiyon benzeyebilir. Bu yolu nasıl elde edeceğimi basit bir API bulabilirsem, rscPath işlevinde kodlanmış olması gerekmez.