今日の学習
今日学んだこと 2021/01/03
学習項目
統合テストコード(RSpec)
学習内容
基本的な書き方は変わらないが、統合テストの場合は流れで行っていく。
it '正しい情報を入力すればユーザー新規登録ができる do # 1.トップページに移動する visit root_path # 2.トップページにサインアップページへ遷移するボタンがあることを確認する expect(page).to have_content 'sign_up' # 3.新規登録ページへ移動する visit new_path # 4.ユーザー情報を入力する fill_in 'Name', with: 'sample' # 5.サインアップボタンを押すとユーザーモデルのカウントが1上がることを確認する expect{ find('sample[name="botton"]').click }.to change { Sample.count }.by(1) # 6.トップページへ遷移したことを確認する expect(current_path).to eq root_path end
適当にテストコードを書いたが、こんな感じ。
1.はvisitを使うことによって、実際にトップページに移動する。
2.はそもそもトップページに新規登録のボタンがあるかを確認する。
3.は登録ページへ移動する。
4.はおそらく入力フォームがあるので、それを入れる。
5.は新規登録のボタンを押したことによって、ちゃんとデータベースに登録されたのか、レコード数によって判定する。
6.は登録完了後、トップページに移動したかを確認している。
こんな感じで、人がクリックしたしとかするのを文字コードで実際にパソコンにやってもらう感じです。トップページに行ったな。ボタンある。次いこう。的な感じのを自動でしてくれます。
テストを実行すると、超高速で動き出すので面白いです。こうなってくると、やはりexampleの整理、何をテストするのかがかなり大事になると思いました。
全く太刀打ちできなくなる訳ではなく、binding.pryを途中に入れることで途中で処理が止まるのでやりたい処理を打ちながら確認できます。
まとめ
パソコンが"うらああああああ"って感じでテストしてるかんじがかなり好き