woodman0224
@woodman0224 (林 正)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

RSpec(Capybara)でログイン状態が保持されない

発生している問題

RSpec(Capybara)でログイン状態時のテストを実行したいのですが、うまくいきません。

let(:user){FactoryBot.create(:user, :a)}
before do
    visit login_path
    fill_in 'メールアドレス', with: user.email
    fill_in 'パスワード', with: user.password
    click_button 'ログイン'
end
it '新規投稿画面が表示される' do
    visit new_post_path
    expect(page).to have_content '新規投稿'
end

上記の場合なぜかログイン状態が保持されず、ログインしないと新規投稿に遷移できない機能にしているためテストが通りません。

しかし、

it '新規投稿画面が表示される' do
    click_link '新規投稿'
    expect(page).to have_content '新規投稿'
end

上記の場合だとユーザページにある新規投稿リンクから遷移してテストがパスします。

なぜなのか理由がわからずにいます。投稿機能のテストはこのように遷移できるのですが、他の機能のテストの際にはユーザページにリンクを貼っていないので、visit を用いてテストが上手くパスするようにしたいです。

ご教授お願いいたします!🙇‍♂️

使用環境

capybara (3.37.1)
rspec-rails (5.1.2)
deviceは用いていません!

1

1Answer

自分の環境 ( rails6 / capybara (3.38.0) / rspec-core (3.12.0) )で試すと普通に別ページにvisitしてもログイン状態が保たれてますね

確実にログインは成功してそうですか?
非ログイン状態でも新規投稿ページが表示できるために後者が成功してたりしませんか

1Like

Comments

  1. @woodman0224

    Questioner

    コメントありがとうございます🙇‍♂️
    はい!試しに click_link 'ログイン' より下記をコメントアウトしてスクリーンショットを見たところログインしています!フラッシュメッセージも出るようにしているので出ています!また非ログイン時にはログインページにリダイレクトするようにしているのですがそちらのテストはパスしています!
    どうしてなのか謎です...

Your answer might help someone💌