如何在需要当前密码时使用Capybara测试更新帐户信息?

时间:2017-01-10 06:44:38

标签: ruby-on-rails rspec devise capybara

我正在实施帐户设置功能,用户可以在其中修改其姓名,电子邮件地址,密码等。它基于具有update方法的Devise注册功能。

我想使用RSpec和Capybara为此编写一个功能测试,但是用户需要提供他们当前的密码来更新帐户详细信息。这很困难,因为密码是加密的。

这是我到目前为止所做的,但显然它不起作用:

require 'rails_helper'

feature 'Updating account' do
  scenario 'Updating name', :sidekiq_inline do
    create :user
    login_as User.first

    visit edit_user_registration_path

    fill_in 'Name', with: 'New name'
    fill_in 'Current password', with: User.first.encrypted_password

    click_button 'Save changes'

    expect(current_path).to eq home_path
    expect(page).to have_text 'Your account has been updated successfully.'
  end
end

1 个答案:

答案 0 :(得分:1)

假设您使用Factory-Girl(或同等产品)创建测试对象,您应该能够指定用于创建用户的密码

create :user, password: 'my_password'

然后在测试中重复使用

fill_in 'Current password', with: 'my_password'