テストを良しなに自動化する「guard」と結果を色付けする「minitest-reporters」
今までコードのテストなんて気にしたことなかったのですが、Rails チュートリアル曰く「ちゃんとやったほうがいいよ〜」とのことだったので、やります。
忘れそうなのでそのテスト関連のメモです。
事前準備
Gemfileに下記のようにテスト用のgemを書き込んで bundle install
group :test do
gem 'rails-controller-testing', '1.0.2'
gem 'minitest-reporters', '1.1.14'
gem 'guard', '2.13.0'
gem 'guard-minitest', '2.4.4'
end
minitest-reportersの使い方
test/test_helper.rb
にかきを追記
require 'minitest/reporters'
Minitest::Reporters.use!
rails t
を実行すると表示結果に色がつきます!
guardの使い方
bundle exec guard init
でguardの初期化
チュートリアルに上がっている下記を Guardfile
にコピペ。これで良しなにやってくれるっぽいです。中身は気が向いたときに追ってみます。また、これはRailsのチュートリアルに最適化されたものなので、プロジェクトごとに修正が必要です。
Guardfile
: railstutorial.org/guardfile
そのままだと Guard使用時にSpringとGitが競合して色々問題らしいです。知らんけど。
それを防ぐために.gitignore
ファイルにspring/
ディレクトリを追加します。
echo "# Ignore Spring files.
/spring/*.pid" >> .gitignore
bundle exec guard
を実行。下図のようになるので、このターミナルはそのまま開きっぱなしにしておきます。そうすると、コントローラーなどのコードを変更した時に自動でテストが走ります。
手動でテストを実行したい時はこのguard(main)プロンプトでリターンキーを押下します。
テストがなんか重い。。と感じたら
Springのバグかなんかでテストのパフォーマンスが低下することがあるそうです。
なんか重いなーと思ったらプロセスをチェックし、Springプロセスをとりあえず殺します。
springプロセスを確認
ps aux | grep spring
pid(プロセスid)を指定してkill。pidはps aux
表示結果の左から2番目のカラム。
pkill -15 xxxx
プロセス名(この場合はspring)を指定して殺っちゃうこともできる。
pkill -15 -f spring