Qiitaからの移動


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