Rspecでcontrollerのテスト
controllerのテストをまともに書いたことなかったので。
describe TestController, type: :controller do let(:account) { create(:account) } describe 'auth' do context '有効なトークンを渡したとき' do before do token = TokenService.build_token(account) # sessionに値をセットできる session[:use_auth] = true # 指定のメソッドをparamsつきで呼ぶ get :auth, token: token end it '200を返す/ログインユーザが取得できる' do # ステータスコードをチェックできる expect(response).to have_http_status(200) # privateメソッドの値はcontroller.sendで取得できる current_user = controller.send :current_user expect(current_user.id).to eq account.id end end context '無効なトークンを渡したとき' do before do get :auth, token: 'xxxxxxx' end it '401を返す' do expect(response).to have_http_status(401) end end end end