" TypeError:X不是函数"在最新的测试中

时间:2017-08-23 18:43:55

标签: scala.js

我正在使用scalatest编写scala.js测试,我需要在其中创建XMLHttpRequest对象。我收到以下错误,无法找出原因。

[info] scala.scalajs.js.JavaScriptException: TypeError: $g.XMLHttpRequest is not a function

我已将失败的测试减少到:

package oat.browser.network

import org.scalajs.dom.XMLHttpRequest
import org.scalatest.FreeSpec

class AjaxToolsSpec extends FreeSpec {

  "AjaxTools" - {
    "should parse a simple object" in {
      val xhr = new XMLHttpRequest()   // Failing line
      this.succeed
    }
  }
}

我已成功加入该行 val xhr = new XMLHttpRequest()在我的主程序中,工作正常。

那导致这种情况的测试环境有什么奇怪之处?

build.sbt包含 libraryDependencies ++= Seq(..., "org.scala-js" %%% "scalajs-dom" % "0.9.1",...)

1 个答案:

答案 0 :(得分:1)

您需要configure a JavaScript environment支持DOM,例如使用此sbt设置:

jsEnv := new org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv()

要求您单独安装jsdom(通常使用npm install jsdom)。