Scala.jsメモ4つ目
環境
ソフトウェア | バージョン |
---|---|
Scala | 2.11.7 |
Scala.js | 0.6.6 |
sbt-httpserver | 0.3.1 |
目的
Scala.jsでクライアント側の処理を書いている時,ローカルにあるファイルをテストに使いたいと思った.
本来データはWebサーバから取得するのだけど,テストのたびに本番サーバにアクセスする訳には行かない,真面目なテスティングサーバを用意するのは面倒でやりたくない,といった感じの状況.
そこで,src/test/resources/
にhtmlファイル等を置き,そこへアクセスする事で,テストを書きつつ本番サーバへのアクセスをなくす,という戦略を考えた.
sbt-httpserver プラグイン
調べたら具合の良いプラグイン(sbt-httpserver)が見つかったので試してみた.まず,plugins.sbt
に
/* sbt-httpserver */
resolvers ++= Seq(
Resolver.url("wav", url("https://dl.bintray.com/wav/maven"))(Resolver.ivyStylePatterns),
"Scalaz Bintray Repo" at "http://dl.bintray.com/scalaz/releases") // scalaz-stream
addSbtPlugin("wav.devtools" % "sbt-httpserver" % "0.3.1")
と書いてpluginを追加し,build.sbt
に以下のように書くと,
import wav.devtools.sbt.httpserver.{SbtHttpServerPlugin,FileServer}
import SbtHttpServerPlugin.autoImport._
enablePlugins(SbtHttpServerPlugin)
addHttpServices(
_ += FileServer.service("test", (resourceDirectories in Test).value)
)
sbt
起動中,http://localhost:8083/test/
以下にアクセスする事で,リソースファイル(デフォルトではsrc/test/resources/
以下)へアクセスできる.
これで当初目的は大凡達成できたが,ファイルサーバとしての設定記述をしたので,post
メソッドが利用できないのは問題として残っている.実際に処理をするのではなく,想定されているフロー通りに動くモックがあればいいので,是非どうにかしたい.