RSpecを利用して、userのupdate時のテストをしているのですが、以下のコードで実行すると、以下のエラーが発生してしまいます。
require 'rails_helper' RSpec.describe 'users', type: :system do let(:user) { FactoryBot.create(:user) } describe "user edit" do -------------------------- scenario "successful edit" do valid_login(user) visit user_path(user) click_link "Setting" fill_in 'Name', with: 'EditTest' fill_in "Email", with: "edit@example.com" fill_in 'Password', with: 'editpassword' fill_in 'Confirmation', with: 'editpassword' click_button "Save changes" expect(current_path).to eq user_path(user) expect(user.reload.name).to eq 'EditTest' expect(user.reload.email).to eq "edit@example.com" expect(user.reload.password).to eq 'editpassword' end end end
Failure/Error: expect(user.reload.password).to eq 'editpassword' expected: "editpassword" got: "password" (compared using ==)
FactoryBot
FactoryBot.define do factory :user do name { "Test User" } sequence(:email) { |n| "user_#{n}@example.com"} password { 'password' } password_confirmation { 'password' } end end
valid_login helper
def valid_login(user) visit root_path click_link "Log in" fill_in 'Email', with: user.email fill_in 'Password', with: user.password click_button 'Log in' end
エラー内容から、passwordの値が変更できていないバグが発生しておると思い、実際に試してみたところ、問題なくpasswordの変更が可能だったので、テストコードに不備があると思うのですが知識不足のためわからずじまいです。
ご教授お願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。