Scala.jsの単体テストでURLへアクセスする
Qiitaからの移植
Scala.jsメモ2つ目
環境
ソフトウェア | バージョン |
---|---|
Scala | 2.11.7 |
Scala.js | 0.6.6 |
まとめ
- Scala.jsの単体テストでは,URLにアクセスができない
Phantom.js
のコマンドライン引数の変更でアクセスできるようになる
やりたいこと
テストデータとして,外部のURL(localhostを含め)を使いたい.例えば,対応するWebサービスのサーバへアクセスしてデータを取ってきたりとか,. しかし,単体テストでの外部URLアクセスはデフォルトで不可能となっている.
例えば,http://localhost:631
(LinuxだとCUPSのクライアントがよく動いている)にjQueryを用いてリクエストを以下のように飛ばすと,いつまでもcallback関数が呼ばれない.
jQuery.get("http://localhost:631", null, (e: dom.Event) => {
println("called!")
})
やったこと
参考にしたページURLをメモし忘れてしまったが,Stack Overflowだったかどこかのページによると,クロスドメインの類の問題らしい.なので,
scalaJSUseRhino in Global := false
jsEnv in Test := PhantomJSEnv(args = Seq("--web-security=no")).value
とbuild.sbt
に追記して,単体テストでPhantom.js
を利用し,さらにクロスドメインアクセスを許可するとcalled!
と表示されるようになる.
おわりに
明らかにいい方法ではないので,もっといい方法があれば教えて下さい.そもそも,Scala.jsの単体テストはURLにアクセスするべきではなく,他に方法がある,とかも含めて教えて頂けたら嬉しいです.