2012-01-02 12 views
9

में रुपेक के साथ वार्डन/डेविस को कैसे बाहर निकालना है, मैं अपने रेल ऐप में कैपिबरा टेस्ट सूट में आरएसपीसी मैक्स का उपयोग करके लॉग इन उपयोगकर्ता (डेविस/वार्डन के साथ) को लॉग आउट करना चाहता हूं। यह एक टन बचाएगा, और इसका मतलब यह होगा कि मेरा टेस्ट सूट नियमित रूप से चलाया जा सकता है। कि मैं वसीयत, मैं अब एक UserSession वस्तु की पहुंच है का उपयोग कर रहाकैपिबरा परीक्षण

def login(user) 
    user_session = mock_model(UserSession, {:user => user}) 
    UserSession.stub(:find).and_return(user_session) 
end 

अब:

पहले मैं इस तरह कुछ कोड के साथ अपने सत्र मॉडल को छोटा करके इस authlogic का उपयोग कर ऐसा करने में सक्षम था। और चूंकि मैं अपने कोड का परीक्षण करने के लिए कैपिबारा का उपयोग कर रहा हूं, इसलिए मुझे sign_in परीक्षण सहायक में निर्मित डिवाइज़ का उपयोग करने के लिए अनुरोध ऑब्जेक्ट की प्रत्यक्ष पहुंच नहीं है।

मेरा प्रश्न है: मैं साइन-इन पथ पर जाने के लिए उपयोगकर्ता में लॉग इन करने के साथ प्रत्येक परिदृश्य की आवश्यकता के बिना कैपिबरा, डिवाइज और स्पेक मैक्स के साथ लॉग इन उपयोगकर्ता को अनुकरण कैसे कर सकता हूं, फॉर्म भरें, सबमिट करें, प्रतीक्षा करें प्रतिक्रिया के लिए, और फिर वांछित पृष्ठ पर जाना?

+1

तुम क्या कहा, लेकिन सिर्फ मामले [login.rb] (में https://github.com/gitlabhq/gitlabhq /blob/master/spec/support/login.rb) और [sample_use.rb] (https://github.com/gitlabhq/gitlabhq/blob/master/spec/requests/dashboard_issues_spec.rb) – clyfe

+0

प्रतिक्रिया के लिए धन्यवाद , मुझे पहले से ऐसा कुछ मिला है कि मैं इससे बचने की कोशिश कर रहा हूं। यद्यपि आपकी टिप्पणी उन भविष्य के आगंतुकों के लिए निश्चित रूप से उपयोगी है जो शायद नहीं। – Schneems

उत्तर

15

वार्डन परीक्षण सहायकों में निर्मित के साथ आता है। यह आपको अपने ककड़ी परीक्षणों में यूआई का उपयोग किए बिना लॉगिन करने की अनुमति देता है। बस अपनी परियोजना में नीचे दी गई फाइलें जोड़ें।

# features/support/warden.rb

Warden.test_mode! 
World Warden::Test::Helpers 
After { Warden.test_reset! } 

# features/step_definitions/user_steps.rb

Given /^I am logged in as a user$/ do 
    @current_user = User.create!(:username => 'user', :password => 'password') 
    login_as(@current_user, :scope => :user) 
end 

Use Wardens.test_mode! with Capybara

नहीं
+0

मुझे लगता है कि यह सही दिशा है, लेकिन इसे काम करने में काफी कुछ नहीं मिल सकता है। सहायक विधियों को सही ढंग से बुलाया जाता है, लेकिन current_user et। अल अभी भी मेरे ऐप में सही ढंग से दिखाई नहीं दे रहे हैं। क्या यह आपके लिए काम करता है? – Schneems

+2

मुझे अपने वर्तमान दायरे को 'login_as @current_user निर्दिष्ट करने की आवश्यकता है,: scope =>: मदद के लिए उपयोगकर्ता का धन्यवाद – Schneems

+1

कैपिबरा पेज से जोड़ने के लिए भी धन्यवाद, मैं वास्तव में लिखना समाप्त कर दिया^^^https://github.com/plataformatec/वसीयत/wiki/कैसे-: -Test-साथ-Capybara/_history – Schneems

संबंधित मुद्दे