request specを書いています。
ログインしたuserが投稿機能(モデル名:report)で、report/newのアクションが行えるかのテストでつまづいています。ログイン機能はdeviseで実装しています。
ステータスコードが200になることを期待しているのですが、テストを実行すると302となってしまいます。
原因がわかる方がいらっしゃいましたら、ご教示お願いします。
以下がコードです。
factries/user.rb
FactoryBot.define do factory :user do email {"email@example.com"} username {"myname"} password {"password1111"} end end
requests/reports_spec.rb
require 'rails_helper' RSpec.describe ReportsController, type: :request do describe 'GET#new' do let(:user) { create :user } it do sign_in user get new_report_path expect(response).to have_http_status(:ok) end end end
reports_controller.rb
class ReportsController < ApplicationController before_action :authenticate_user!, except: [:show, :index] before_action :ensure_correct_user,{only: [:edit,:update,:destroy]} def new @report = Report.new end end
エラー文
1) ReportsController GET#new is expected to respond with status code :ok (200) Failure/Error: expect(response).to have_http_status(:ok) expected the response to have status code :ok (200) but it was :found (302)
テストでは、userがサインインしている様に書いているのものの、何らかの手違いでそれを読み込んでいないのかなと思っているのですが、どこを直していいのかわかりません。
わかる方がいらっしゃいましたらお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/02 11:48
2021/02/02 11:56
2021/02/02 12:00
2021/02/02 12:38