認証機能をApplicationControllerとかBaseControllerに実装したあと,いざテストを書こうとしてもそもそもApplicationControllerとかリクエストを受けるためのメソッドないしどうしようってなったので共有します.
そんなときはRspecのAnonymousController
base_controller_spec.rb
require 'rails_helper'
RSpec.describe BaseController, type: :controller do
controller(BaseController) do
def index
render nothing: true
end
end
describe '#some_method' do
it 'should return 200' do
get :index
expect(response.status).to eq(200)
end
end
end
controller ブロックに適当なメソッドを定義するだけでそこに対してリクエストが送れるようになる. すごい. ちなみにcontrollerの引数を省略するとdescribeされているcontrollerになるらしいです.