ほぼすべての統合テストで、ユーザーは Devise にサインインする必要があります。これにはかなりの時間がかかるため、ログイン ページにアクセスして詳細を入力し、ログイン ボタンを押さなくても、ユーザー セッションを設定する方法はないかと考えました。
特定のユーザーをすぐにサインインさせるヘルパー メソッドが Devise に組み込まれているのではないでしょうか?
助けてくれてどうもありがとう。
ほぼすべての統合テストで、ユーザーは Devise にサインインする必要があります。これにはかなりの時間がかかるため、ログイン ページにアクセスして詳細を入力し、ログイン ボタンを押さなくても、ユーザー セッションを設定する方法はないかと考えました。
特定のユーザーをすぐにサインインさせるヘルパー メソッドが Devise に組み込まれているのではないでしょうか?
助けてくれてどうもありがとう。
スペック ファイルのヘッダーに、次のようにinclude Warden::Test::Helpers
とを挿入します。Warden.test_mode!
require 'spec_helper'
include Warden::Test::Helpers
Warden.test_mode!
describe "AuthenticationPages" do
let(:user) { FactoryGirl.create(:user) }
before { login_as(user, scope: :user }
...
上記のコードでは、FactoryGirl を使用してユーザーを作成しました。ユーザーを作成するには、他の方法を使用できます。user
次に、 method を使用してログインしますlogin_as
。その後、任意のテストを実行でき、ログインしていることを確認できますuser
。これがあなたが望むものだと思います。これが役立つことを願っています。詳細はこちらTest with capybaraで確認できます。
編集
これが正しく機能することを確認するには、各テストの後に warden をリセットする必要があります。
Warden.test_reset!
何らかの理由で、ログインしているテスト ユーザーをログアウトする必要がある場合は、Warden のログアウト ヘルパーを使用できます。
logout(:user)