##テストとは何か?##
テストとは書かれたコードが期待通りの動作をしてくれるかどうかの確認を行うものである。
開発初期の段階なら自分の手(手動)でコードと動作を確認してまわってもいいかもしれないが、開発が進みコードの量が膨大になればテストに割く時間も膨大になってしまう。
そうしたときのために、自動テストというものを作成する。
自動テストとはrailsのテストファイルに書かれた条件を満たしてくれるかどうかをコンピュータに判定してもらうことである。testディレクトリはrails new を実行した時点で作成され、テストファイルはrails generate controllerなどのコマンドを実行した際に自動的に作成されている。
##テストの例##
特定のページの速度が遅くないか、htmlのtitleタグに想定通りの文字列が設定されているか、そのページにアクセスできるか、などをテストしていく。
ページの名前は"home"とする。
test "should get home" do
get page_home_url // "/page/home"にアクセス可能か
get static_response :success // レスポンス速度の判定
assert_select "title","home" // セレクタ、特定の文字列が含まれているか調べる(この場合はtitleタグがあるか、titleが"home"になっているかを確認する)
end
テストコードを書き終えたらrails testでテストを実行する。
$ rails test
GREENが出ればテストを通ったということである。
$ rails test
~中略~
# Running:
.
REDがでた場合はテストに通らなかった(失敗した)ということである
$ rails test
~中略~
# Running:
F
こうなったらエラーの内容を読み、修正する必要がある。
その後テストに通るまで修正とテストを繰り返す。
#終わりに
テストを通過したからと言ってそのコードが完全なものであるという保証にはならないが、明確なミスを減らし、気づく頻度を上げるができる。また、コードのリファクタリングに伴う不具合がないかどうかを判別するのにも役立つ、その恩恵はアプリの規模が大きいほど大きくなるだろう。