Controller の concerns を Rspec を使用してテストする方法

やりたいこと

Controller の concerns を Rspec を使用してテストを行いたい。

実現方法

ApplicationControllerconcernsinclude して、テストを実装する。 :arrow_down: は、実装のイメージである。

app/controllers/concerns/vote.rb

module Vote
  extend ActiveSupport::Concern

  def upvote
  end
end

spec/controllers/concerns/vote_spec.rb

require 'rails_helper'

RSpec.describe Vote, type: :controller do
  controller ApplicationController do
    include Vote
  end

  before do
    routes.draw { put 'upvote' => 'anonymous#upvote' }
  end

  describe 'PUT #upvote' do
    specify 'return http success' do
      put :upvote
      expect(response).to have_http_status(:success)
    end
  end
end

バージョン

  • Ruby 2.4.0
  • Rails 5.0.1
  • Rspec 3.5.4