Rspec
でsorcery
を使った認証機能のテストを構築していますが、FactoryBot
で定義するuser
のactivation_state
がactive
に変えられません。
この現象は属性を以下のように書き換えができるようにFactoryBot
に定義してみましたが、そもそもactivation_state
がpending
のままで変化がありません。
ruby
1FactoryBot.define do 2 factory :user do 3 email { Faker::Internet.unique.email } 4 password { '12345678' } 5 password_confirmation { '12345678' } 6 username { Faker::Name.name } 7 trait :activated do 8 after(:create) do |user| 9 user.update!(activation_state: "active") 10 end 11 end 12 end 13end
user_sessions_spec.rb
ruby
1require 'rails_helper' 2RSpec.describe 'ログイン・ログアウト', type: :system do 3 let(:user) { create(:user) } 4 describe 'ログイン' do 5 context '認証情報が正しい場合' do 6 it 'ログインができること' do 7 visit login_path 8 byebug 9 fill_in 'メールアドレス', with: user.email 10 fill_in 'パスワード', with: '12345678' 11 click_button 'ログイン' 12 expect(current_path).to eq diaries_path 13 expect(page).to have_content 'ログインしました' 14 end 15 end 16 end 17end
(byebug) user
<User id: 63, username: "田村 愛美", created_at: "2021-11-29 03:45:33", updated_at: "2021-11-29 03:45:33", activation_state: "pending",
【参考記事】
・ユーザー認証にSorcery使ってるときのFactoryBotでactivation_state: 'active'にできない
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。