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メソッドが利用できないのは問題として残っている.実際に処理をするのではなく,想定されているフロー通りに動くモックがあればいいので,是非どうにかしたい.