前提・実現したいこと
rspecのSystemSpec作成中、途中からfill.inが動かなくなりました。
ログインできるようにしたいです。
発生している問題・エラーメッセージ
Failure/Error: expect(page).to have_content '作成' expected to find text "作成" in
該当のソースコード
最後の新規作成機能だけfailureとなります。スクリーンショットを見てみると
visit new_session_pathの通りにログイン画面に移った所で止まっています。
フォーム欄は空欄で、new_session_pathに作成というボタンはありません。
下のnew_question_pathに作成ボタンがありますがログインしていなければ遷移しません。
require 'rails_helper' describe '問題管理機能', type: :system do let(:user_a) { FactoryBot.create(:user, name: 'ユーザーA', email: 'a@example.com') } let(:user_b) { FactoryBot.create(:user, name: 'ユーザーB', email: 'b@example.com') } let!(:question_a) { FactoryBot.create(:question, title: '最初の問題', user: user_a) } shared_examples_for 'ユーザーAが作成した問題が表示される' do it { expect(page).to have_content '最初の問題' } end describe '一覧表示機能' do context 'ユーザーAがログインしているとき' do let(:login_user) { user_a } before do visit new_session_path fill_in 'Eメール', with: 'login_user.email' fill_in 'パスワード', with: 'login_user.password' click_button 'ログイン' visit questions_path end it_behaves_like 'ユーザーAが作成した問題が表示される' end context 'ユーザーBがログインしているとき' do let(:login_user) { user_b } before do visit new_session_path fill_in 'Eメール', with: 'login_user.email' fill_in 'パスワード', with: 'login_user.password' click_button 'ログイン' visit questions_path end it_behaves_like 'ユーザーAが作成した問題が表示される' end end describe '詳細表示機能' do context 'ユーザーAがログインしているとき' do let(:login_user) { user_a } before do visit question_path(question_a) end it_behaves_like 'ユーザーAが作成した問題が表示される' end end describe '新規作成機能' do context 'ユーザーがログインしているとき' do let(:login_user) { user_a } let(:question_content) { '新規作成テスト' } before do visit new_session_path fill_in 'Eメール', with: 'login_user.email' fill_in 'パスワード', with: 'login_user.password' click_button 'ログイン' visit new_question_path end it '新規作成画面' do expect(page).to have_content '作成' end end end end
試したこと
同じ書き方で一覧表示と詳細表示機能は動くので、何が原因かわかりません。
フォーム欄が空欄でnew_question_pathに移っていないのでfill_inが機能していないのだと思い、
idを指定してEメールの部分を変えたり、findとsetで指定してみたりしましたが結果は同じでした。
補足情報(FW/ツールのバージョンなど)
ruby 2.5.3
rails 5.2.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/15 11:48
2019/10/16 01:24
2019/10/17 12:11