使用Node.js而不是Rhino时,Scalajs测试没有运行

时间:2016-06-09 04:06:09

标签: sbt scala.js

我目前正在开发一个旨在作为JS库公开的Scala.js库。为了让我的测试运行得更快,我根据scalajs Basic Tutorial

添加了选项

scalaJSUseRhino in Global := false

然而,当我在sbt中运行测试时,似乎没有任何事情发生:

clean
project myprojectJS
test
last

以下是last命令

的相关输出
[debug] Loading JSEnv with linked file /home/jacob/proj/mastermind/js/target/scala-2.11/mastermind-test-fastopt.js
[debug] Subclass fingerprints: List()
[debug] Annotation fingerprints: List()

加载JSEnv后似乎没有发生任何事情。

2 个答案:

答案 0 :(得分:1)

问题是因为我正在编写一个将作为Javascript模块公开的库,我在SBT中有以下配置:

scalaJSOutputWrapper := ("var __ScalaJSEnv = { exportsNamespace: exports };", ""),

这意味着生成的测试运行器JS文件也将被包装,使得输出Javascript文件基本上什么都不做。

在SBT中添加此配置可解决此问题:

scalaJSOutputWrapper in Test := ("", ""),

答案 1 :(得分:0)

只要我使用ScalaTest和UnitTest来[debug] Subclass fingerprints: List() [debug] Annotation fingerprints: List() ,ScalaJS也会测试我的环境中不运行的地方。

sbt -v -d

两个指纹都为空白列表(运行uTest获取详细信息和调试信息)

然后我切换到sbt-crossproject(由于build.sbt), 已添加到我的testFrameworks += new TestFramework("utest.runner.Framework"), libraryDependencies += "com.lihaoyi" %%% "utest" % "0.6.3" % "test" 设置中:

test

现在... [debug] Loading JSEnv with linked file qqqqq/.js/target/scala-2.11/qqqq-test-fastopt.js [debug] Starting process: node [debug] Subclass fingerprints: List((utest.TestSuite,true,org.scalajs.testcommon.Serializer$FingerprintSerializer$$anon$3@12662894)) [debug] Annotation fingerprints: List() -------------------------------- Running Tests -------------------------------- [debug] Running TaskDef(TutorialTest, org.scalajs.testcommon.Serializer$FingerprintSerializer$$anon$3@60e5e39e, false, [SuiteSelector]) .... 日志显示...

"userid" => $liu['userid'],"userid" => $data['userid'],"userid" => $_GET['userid']