チュートリアルをRSpecでテストしてみました。今回は第7章~第8章のテストを書きます。第3章~第6章のテストは以下にあります。RSpecによるRailsテスト入門によるとさあこれでみなさんはコントローラスペックとリクエストスペックの両方を書けるようになりました。どちらのテストを書くべきでしょうか?第5章でもお話ししたとおり、私はコントローラスペックよりも統合スペック(フィーチャスペックとリクエストスペック)を強くお勧めします。おけるコントローラスペックは重要性が低下し、かわりにより高いレベルのテストの重要性が上がってきているためです。したテストの方がアプリケーションのより広い範囲をテストすることができます。今回はリクエストスペックでユーザーコントローラーのテストを書いていきます。newアクションのテスト初めにnewアクションをテストします。spec/requests/user_spec.rbを作成し、新規登録ページが正しく表示されることをテストします。endend実行しテストがパスするのを確認します。showアクションのテスト続いてユーザー表示ページのテストですが、ログインしている場合のみ表示されることをテストするため、ログイン済みユーザーとゲストユーザー2通りのテストを書きます。endendそしてsign_in_asメソッドをspec/support/utilities.rbで定義します。}endここでテストを実行するとテストが失敗するので、ユーザーファクトリを修正しテストユーザーを有効化します。endendテストを実行しパスするのを確認します。ユーザー登録のテスト(※windowsでやると何故か失敗した)続いてユーザー登録をテストしますが、私の場合、初めにwindowsのPCを使ってテストするとアカウント有効化の部分がパスせず、後日macでやると何故かパスしました。開発環境はAWSのCloud9を使用しているのでOSは関係ないと思うのですが、理由がわかる方いましたら教えていただきたいです。ユーザー登録のテストはフィーチャスペックに書いていきます。フィーチャスペックでは、ブラウザの操作(リンクをクリックしたり、Webフォームを入力したり)をシミュレートするためにCapybaraを使います。CpaybaraはRails5.1以後ではもとからインストールされていますが、インストールされていない場合は以下をGemfileに追加します。2.15'endまた、rails_helper.rbでテストインストールに対してCapybaraを読み込むように伝えます。RSpecの設定が続く...これでCapybaraを使う準備は完了です。以下を実行してユーザー登録のテストを書くためのフィーチャスペックを作成します。sign_up次に、ユーザーがサインアップするためのステップと期待される結果をこのファイルに追加します。"アカウント有効化メールを送信しました。endendまた、アカウント有効化メールをテストするためにアプリケーションのdevelopment環境とtest環境の設定を追加します。.endテストを実行すると初めは以下のエラーが出ていましたが、数日後にmacでテストするとパスしました。trueサインインのテストユーザーのログインテストはログイン成功時と失敗時の2つのテストを書いていきます。spec/features/login_spec.rbを作成し以下を追加します。"メールアドレスまたはパスワードが正しくありません。endendまた、spec/support/login_support.rbを作成し、valid_loginメソッドを追加します。サポートモジュールを使うことでコードの重複を失くし、ログイン処理が変わった場合でも全てのテストコードを変更する必要がなくなるので便利です。LoginSupportendモジュールの定義の後にはRSpecの設定が続きます。ここでは、RSpec.configureを使って新しく作ったモジュール(LoginSupport)をinculdeしています。テストを実行しパスするのを確認します。サインアウトのテストサインインに続いてサインアウトのテストを書いていきます。先ほどのspec/features/login_spec.rbにログアウトのテストを追加します。・・・以下省略テストを実行しパスするのを確認します。第9章以降は完成し次第投稿する予定です。B@IrieLuka2019年の3月に大学院を卒業し、4月から機械系エンジニアとして働いています。ブログでは英語学習、YouTubeでは機械エンジニアの仕事内容や社会人1年目で学んだことについて発信しています。upLoginユーザーは見つかりませんでした。