Edited at

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

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



参考

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