tmuxとvimを使いながら、Elixirで開発をしている時に毎度毎度、ファイル変更のたびにmix test
を実施するのが、ちょっと面倒かも。。
ということで、Rubyのguardみたいにon file changed
でテストを走らせることができないかなー、と探してみたところ下記を見つけました。
Automatically run your Elixir project's tests each time you save a file. Because TDD is awesome.
これは!、と期待感を持って、触ってみました。
実際に使ってみたリポジトリ
設定手順
すでに、mix new ${application_name}
は実施済みの前提で記載します。
1. mix.exsにdepsを追加する
defp deps do
[{:mix_test_watch, "~> 0.2", only: :dev},
{:tentacat, "~> 0.2"},
{:riak, "~> 1.0"},
{:poison, "~> 2.0"},
{:factory_girl_elixir, "~> 0.1.1"}]
end
2. mix deps.getを実施する
3. mix test.watchを実施する
mix test.watch
すると、コンソールに以下のようなメッセージが出てtestが自動で走り出します。
Running tests...
便利!
あとは、ファイル変更のたびにテストが走るようになるので、コンソールをtmux等で別paneにして開きっぱにしておけば良い感じでした。
4. test以外のタスクも実行させたい
Mix.Configを利用することで、test以外のタスクも追加できるようです。ここはまだ試していないです。
use Mix.Config
config :mix_test_watch,
tasks: [
"test",
"dogma",
]
README.mdでは、dogmaを指定していますが、これは、lintツールで、rubyで言う所のrubocupみたいですね。
lintツールについては、credoを別の機会に見てみようと思います^^
参考
本日はここまでとなります。