我目前正在开发一个旨在作为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后似乎没有发生任何事情。
答案 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']