"TypeError: X is not a function" in scalatest test

"TypeError: X is not a function" in scalatest test

我正在使用 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",...)

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

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

这需要您单独安装 jsdom(通常与 npm install jsdom 一起)。