fukuoka.ex代表のpiacereです
今回もご覧いただいて、ありがとうございます
ElixirでBDD書けるESpecですが、mix test.watchが効かないため、いちいちコマンド打つのがメンドイのですが、mix test.watchをホンの少しいじれば動くので、deps配下をクイックハックしちゃいます
ちなみに、mix test.watchをクイックハックせず、ex_guardを使う方法もあるみたいです
お知らせ:Elixirもくもく会(リモート参加OK、入門トラック有)を今月末に開催します
「fukuoka.ex#14:Elixir/Phoenixもくもく会~入門もあるよ」を9/28(金)に開催します
前回は、ゲリラ的に募った「Zoomによるリモート参加」を、今回から正式に受け付けるようになりましたので、福岡以外の都心や地方からでも参加できます(申し込みいただいたら、追ってZoom URLをconnpassメールでお送りします)
また、これまではElixir/Phoenix経験者を対象とした、もくもく会オンリーでしたが、今回から、入門者トラックも併設し、fukuoka.exアドバイザーズ/キャストに質問できるようにアップグレードしました
お申込みはコチラから
https://fukuokaex.connpass.com/event/100659/
mix test.watchとESpecをインストール
まず適当なElixir PJで、mix test.watchと、ESpecをインストールします
mix.exsの「def deps do」配下の先頭に以下を追記してください
defmodule Zundokos.Mixfile do
use Mix.Project
…
defp deps do
[
{ :espec, "~> 1.6.1", only: :test },
{ :mix_test_watch, "~> 0.8", only: :test, runtime: false },
]
end
…
インストールします
mix deps.get
ESpecの初期化をします
set MIX_ENV=test
mix espec.init
deps配下のmix test.watchをESpec対応に改造
macOSやLinuxは、以下の行の「test」を「espec」に書き換えるだけです
@default_tasks ~w(test)
↓↓↓
@default_tasks ~w(espec)
Windowsは、ここが何故か別で定義されているので、以下のmixコマンド中の「test」を「espec」に書き換えます(これはissueを出した方が良いのかしら?w)
case :os.type() do
{:win32, _} ->
System.cmd("cmd", ["/C", "set MIX_ENV=test&& mix test"], into: IO.stream(:stdio, :line))
_ ->
System.cmd("sh", ["-c", command], into: IO.stream(:stdio, :line))
end
↓↓↓
case :os.type() do
{:win32, _} ->
System.cmd("cmd", ["/C", "set MIX_ENV=test&& mix espec"], into: IO.stream(:stdio, :line))
_ ->
System.cmd("sh", ["-c", command], into: IO.stream(:stdio, :line))
end
mix test.watchでESpecを自動実行させる
あとは、いつも通り、mix test.watchすれば、ファイル保存するたびにESpecが勝手に走るようになります
mix test.watch
これでESpecによるBDDが快適になりますね