Rails 3.2 と Devise を使用するアプリケーションがあります。rspec と Capybara を使用したリクエスト テスト スイートがあります。
Capybara にサインイン フォームに記入して送信してもらうのではなく、サインイン ヘルパーで Warden テスト ヘルパーを使用することに移行しようとしました。テスト スイートのサイズと複雑さのために、これによりテスト ランタイムが 1 分半以上節約されます。
私の構成では次のとおりです。
RSpec.configure do |config|
config.include Warden::Test::Helpers, :type => :request
config.after :each do
Warden.test_reset!
end
end
そしてコンテキストで:
let!(:current_user) { FactoryGirl.create(:user) }
background do
login_as(current_user, :scope => :user)
end
ただし、これらの構成を使用してテスト スイートを実行すると、ほぼすべてのテスト実行で、ユーザーがログインしていないかのようにページが表示されるため、ランダムに失敗する要求仕様が異なります。 (具体的には、user_signed_in?
条件によって制御されるリンク)
私の質問: 他の誰かがそのような信頼性の低さに遭遇したことがありますか?どうすれば軽減できますか?