テストコードとは?
アプリケーション内に記述する、そのアプリケーションの挙動を確認するためのコードです。簡単に言うとエラーなく動くかどうかをボタン一つでチェックできちゃう優れもの。エンジニアの記事でテストコード丁寧に書けるのは大事って読んでたので、この分野は珍しく丁寧に進めています←
やり始めて思ったこと。
エラーを発見するためのテストコードがエラーで動かない (ドヤッ)
ま・・・まあ気を取り直してメンターさんに鬼質問しつつ進めています。常連さんになったので今日も頑張ってますねと声をかけられるようになりました!さて内容をまとめていきます。
正常系→ユーザーが開発者の意図する操作を行った時の挙動を確認するテストコード
異常系→ユーザーが開発者の意図しない操作を行った時の挙動を確認するテストコード 例えば必須項目を抜かして登録しようとしたらアラート画面が出たりとか。その挙動を確認するテストコード
単体テストコード→モデルやコントローラーなどの機能ごとに問題がないか確認する。例えば「画像とテキストがない投稿はテーブルに保存させない」というバリデーションの挙動を確認するテストコード。
結合テストコード→ユーザーがブラウザで操作する一連の流れを再現して、問題がないかを確かめる。例えば「画像とテキストを投稿して送信ボタンを押すと、投稿完了ページに移動して、TOPページに戻るとさっき送った投稿内容が表示されている」という流れを一気に確認するテストコード。
describe (ディスクライブ)
テストコードのグループ分けを行うメソッド。どの機能に対してのテストを行うか?入れ子構造にできるのでこの中にitメソッドをたくさん作ってitメソッドで単体テストを行い、結合テストをdescribeメソッドで行う。表記例は
Rspec.describe User, type: :model do
describe ‘ユーザー登録’ do
it ‘nicknameが空では登録できない’ do
user = User.new(nickname:’ ‘, email: ‘test@example’)
user.valid?
end
it ‘emailが空では登録できない’ do
# emailが空のときのテストコードが入る
end
end
end
こんな感じでitの中身が単体テスト、まとめて結合テスト
ここで出てきたvalid?メソッドは
すでに設定されているバリデーションにエラーがあるかないか?を判断させるメソッド。エラーがない場合はtrue ある場合はfalseを返してきます。