अधिकांश नियंत्रकों के लिए before_filter :authenticate_user!
में रेल अनुप्रयोग का परीक्षण करना, मुझे सत्र को संरक्षित करने के लिए कैपिबरा नहीं मिल सकता है।एक घटना के बाद कैपिबारा मेरे सत्र को क्यों छोड़ रहा है?
मेरे पास कैपिबरा है जो पॉटरगेजिस्ट के साथ फैंटॉमजेएस का उपयोग करके कॉन्फ़िगर किया गया है।
require 'spec_helper'
include Warden::Test::Helpers
module FeatureHelpers
def login(user = FactoryGirl.create(:default_user))
login_as user, scope: :user
user
end
end
मैं निम्नलिखित कल्पना फ़ाइल है:
require 'spec_helper'
include Warden::Test::Helpers
feature 'Leads Data Tasks View' do
before(:each) do
@user = login
end
after{ Warden.test_reset! }
context "clicking a task button" do
scenario "login persists across multuple actions", js: true do
visit '/tasks'
page.should have_selector('#parse', count: 1)
end
end
end
जब मैं परीक्षण चलाने के रूप में यह यहाँ दिखाया गया है, यह पारित करेंगे
मैं निम्नलिखित सहायक का उपयोग करें। हालांकि, अगर मैं AJAX क्रियाओं को निष्पादित करने वाले किसी चीज़ पर click_link
का आह्वान करता हूं, या यदि मैं बस visit '/tasks'
दो बार करने का प्रयास करता हूं, तो should
दावा विफल हो जाएगा क्योंकि मुझे ऐप के लॉगिन पृष्ठ पर रीडायरेक्ट किया जाएगा।
मैंने Capybara::Session स्थापित करने सहित कुछ अलग दृष्टिकोणों की कोशिश की है, लेकिन मुझे अभी भी AJAX अनुरोधों पर 401 कोड मिलते हैं और मैं केवल प्रति spec में सफलतापूर्वक एक बार देख सकता हूं।
मैं क्या गलत कर रहा हूं?
से लिंक करेगा , मुझे लगता है कि यह तैयार है। क्या आप कई AJAX कॉल फायर कर रहे हैं? AJAX कॉल से निपटने के दौरान देवता का कुछ अजीब व्यवहार होता है। अधिक जानकारी के लिए http://stackoverflow.com/questions/11845500/rails-devise- प्रमाणीकरण-csrf-issue देखें – DickieBoy
मुझे उस प्रश्न पर इंगित करने के लिए धन्यवाद। अपने प्रश्न का उत्तर देने के लिए, मैं अक्सर कई AJAX कॉलों को फायर कर रहा हूं, हालांकि यह समस्या तब भी हो रही है जब मैं किसी को भी आग नहीं डालता। यदि मैं 'विज़िट' कॉल को डुप्लिकेट करता हूं ताकि यह पृष्ठ को दो बार लोड कर सके, तो AJAX के बीच कोई भी नहीं होता है। – asfallows
इसके अतिरिक्त, परीक्षण के लिए मैंने आपके लिंक किए गए प्रश्न में स्वीकृत उत्तर से विकल्प 2 और दोनों अस्थायी रूप से मेरे एप्लिकेशन नियंत्रक में 'protect_from_forgery' पर टिप्पणी करने का प्रयास करने का निर्णय लिया। इनमें से कोई भी परिणाम बदल नहीं गया; मुझे अभी भी पहले अनुरोध पर 401 मिलते हैं। – asfallows