MENU
カテゴリー

Rspec コントローラーのテストについて

  • URLをコピーしました!

Rspecでコントローラーのテストを行う場合、どのようなテストが必要でしょうか。
この記事に簡単にまとめておきます。
これからRspecを使用してテストコードを書いてみようとしている方、Ruby on Railsを勉強している方などの参考になれば幸いです。

目次

Rspecを使用してコントローラーをテストする

テストしたい内容

def index 
  @user = User.new(flash[:user])
end 

controllerファイルにこのようなindexアクションの記述があったとしましょう。
この時に、テストしたい内容としては以下になります。

  • レスポンスコードとして200を返すこと
  • newテンプレートをレンダリングすること
  • 新しいUserオブジェクトがテンプレートへ渡されること

以上のようなことがテストしたいこととして上げられます。

それでは、これらをテストコードで書いてみましょう。

実際のテストコード

RSpec.describe UsersController, type: :controller do
  describe 'GET #new' do
    before { get :new }
    
    it 'レスポンスコードが200であること' do
      expect(response).to have_http_status(:ok)
    end
    
    it 'newテンプレートをレンダリングすること' do
      expect(response).to render_template :new
    end

    it 'レスポンスコードが200であること' do
      expect(assigns(:user)).to be_a_new User
    end
  end 
end

こんな感じでテストコードを書くことができます。

ちなみに

この記事で書いたテストコードはrails-controller-testingというgemを導入したことにより使用できるマッチャーが記載されています。気になる方は、ご自身で調べてください。

よかったらシェアしてね!
  • URLをコピーしました!
目次