前書き
rails でwebアプリを作成しようとしているのですがテスト駆動開発で作成しようと思いました。ただ「テストってなんの意味があるんだっけ?」「そもそもどうやってかくんだっけ?」となったので私のように困っている人の参考になれば幸いです。
目次
①テストとは.
②テストの導入.
③testの書き方.
①テストとは.
⇨自分の作成したプログラムが期待通りに動いているのかを確かめることによって開発を効率的に行う。 例えば、下のようなメモアプリがあったとして、右上のログインボタンを押してログインするとちゃんと次のページに画面が切り替わるかどうか気になった際に、いちいちrails server を起動⇨自分でログイン⇨ページが切り替わったか確認する。めんどくさいですね。ページ数が増えた際にいちいち自分で確認するのは膨大な時間を使います。そこで人の代わりにpcに上記の確認をしてもうのが『テスト』です。 ↓
②テストの導入.
railsを使用する場合testがデフォルトで入っているのでgemの追加の操作などを行う必要なし。厳密には以下のコマンドを入力するとtestディレクトリが作成される.
rails new アプリケーション名
テストの書き方.
具体的に「テストを書く場所」、「テストの書き方」、「テストの流れ」について述べたいと思います.
テストを書く場所.
⇨testディレクトリの中の該当するディレクトリの中のファイルに記載する.
rails new アプリケーション名
をすると同時にtestディレクトリが作成されます。testディレクトリの中のディレクトリは次のようになっています。
上から順に.
channelsディレクトリ→Action Cableのコネクションやチャネルのテストのしたい時に記載.
contorollers→コントローラ/ルーティング/ビューのテストを書きたい時.
fixtures⇨データベースに架空のデータを入れてテストしたい時.
helper→ビューヘルパーのテスト.
integration→全体的なテストを書く.
mailer→メール内容に特定の要素は存在するかなどを確認する.
models→モデルのバリデーションがうまく機能しているかなどを確認する.
テストの書き方.
test "任意のテストのタイトル" do テストしたい内容 end
上の書き方は↓で書いた時と同じ意味です.
def test_the_truth テストしたい内容 end
例. urlの語尾に「/users」を足してindexページにちゃんと画面が遷移するかどうかを調べるテストです
test "go to index?" do get users_path /ルーティングのusersでリクエストを送る assert_response :success /index.htmlが表示されたか確認している。 end
↓routing
get '/users', to: 'users#index'
users controllerのアクション
def index end
デェフォルトではindex.htmlを開く.
ここでテストしたい内容と実際自分が書いたコードに差異がない場合はテストが成功し、差異がある場合は失敗する。テストを調べたい時はターミナルでrails testと入力すると↓テストが走る
↓テストが成功した場合は「.」←緑のドッドが記載される。
↓失敗した時は「F」と表示される
テストの流れ ①失敗するコードを書く。 ②成功するコードを書く。 理由テストコードの記載漏れを防ぐ. もし成功するコードを書いた後にテストを書くと,テストコードが間違っていたら自分のコードが間違っていても全てテストが成功し、テストできていないことになる。