LoginSignup
20

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-02-25

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


参考

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20