2021年10月7日 現場Rails Chapter5-16 Specが失敗したときの調査方法
Specが失敗した時の調査手順
Specが失敗した時に、以下の手順でエラーの原因を特定します。 手順3に関しては、モデルが正常に動作しているかを確認したい時に実行します。
失敗場所とエラーメッセージを確認する。
失敗場所とエラーメッセージを手がかりに原因を特定する。
コンソールを使ってモデルの動きを確認する。
スクリーンショットを活用する。
擬似的にSpecを失敗させる
今まで通っていたSpecが失敗するときは、プロダクトコードを変更したときが多いと考えられるので、擬似的に同様の状況を再現するためにapp/models/tasc.rbのバリデーションをコメントアウトします。
class Task < ApplicationRecord # validates :name, presence: true, length: { maximum: 30 }
これにより、通っていたテストが通らなくなり、実際にコード変更を行なったときと同様のエラーメッセージを出せました。
コンソールのsandboxモードについて
コンソールのsandboxモードを使うと、コンソール内でデータベースの内容を変更しても最終的にロールバックして、起動前の状態に戻します。
※sandboxの語源としては、砂場です。気軽に失敗のできる環境という意味合いです。
スクリーンショットを活用する
Specが失敗した際はスクリーンショット保存されるため確認することも出来ます。 ターミナル上で以下のようにエラー文に保存先が出力されます。
[Screenshot]: tmp/screenshots/ファイル名
スクリーンショットを見ることで得られる情報は多いため、原因調査の際にスクリーンショットを確認することは有効な手段ですので活用してみましょう。