Ruby
Guard
Elixir
mix

ElixirでもRubyのguardみたいにファイル変更時に自動でテストが走らせたい!そんな時は、mix-test.watchを使ってみよう!

More than 1 year has passed since last update.

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を別の機会に見てみようと思います^^


参考

本日はここまでとなります。