私はユーザー認証にDevise + Confirmable、テストにMinitest + Capybara +フィクスチャを使用しています。実行する前に、何らかの形式のログイン(ヘルパーlogin_as(@user)
またはCapybaraのログインページに行く)と行@user.confirm
を含む限り、ユーザーのテストにログインして作業させることができます。Devise + Confirmable + fixturesを正しく使うには
私はどのようにしてフィクスチャ自体のユーザーを確認できますか?しかし、毎回この行を含める必要はありません。 YMLで
confirmed_at: Time.now
が、違いを作るようには見えません。
は、今私が持っています。それは、説明のために役に立つかどうここ
は、作業サンプルテストです:
def setup
@user = users(:user)
end
test 'user should be redirected to profile edit on first login' do
@user.confirm
visit(new_user_session_path)
fill_in('user_email', :with => @user.email)
fill_in('user_password', :with => 'foobar')
click_button('Log in')
assert_current_path(edit_user_registration_path)
end
とユーザー・フィクスチャ:
user:
email: [email protected]
confirmed_at: Time.now
encrypted_password: <%= Devise::Encryptor.digest(User, 'foobar') %>
sign_in_count: 0
したがって、ユーザーが作成、保存、まだ確認されなかったを確認することができ、必要に応じて?そのデータベースフィールドを手動で編集したいですか? –
私が知っている限り、器具は実際にDBに保存されていません。開発DBのユーザーを見ると、2つのフィクスチャユーザーのどちらも存在しません。 – oneWorkingHeadphone
こんにちは、私は私の答えを更新しました。問題の解決策が聞こえてきます。ガイドのように設定し、user.confirmメソッドを呼び出す必要があります。モジュール内ControllerMacrosメソッドdef login_user https://github.com/plataformatec/devise/wiki/How-To:-Test-controllers-with-Rails-3-and-4-(and-RSpec)#controller-仕様 –