2011-09-11 11 views
10

मैं उपयोगकर्ता 'मुझे याद रखें' प्रकार की कार्यक्षमता का परीक्षण करने के लिए ककड़ी परीक्षण लिख रहा हूं, और वास्तविक जीवन में ऐसा करने के लिए उपयोगकर्ता अपने ब्राउज़र को बंद कर देगा, अपने ब्राउज़र को फिर से खोल देगा, और साइट पर वापस आ जाएगा।ककड़ी/कैपिबरा में ब्राउज़र को बंद/दोबारा खोलना अनुकरण करें?

मेरा परीक्षण अब तक इस तरह दिखता है:

Scenario: 'Remember me' checked 
    Given I have checked "Remember me" 
    And I am logged in as "[email protected]" 
    When I close and re-open my browser 
    And I come back to the dashboard 
    Then I should be on the dashboard 

हालांकि मैं नहीं जानता कि क्या 'जब मैं बंद कर दें और फिर से खोलने के ब्राउज़र' चरण परिभाषा का में भरने के लिए।

क्या किसी को पता है कि मैं ऐसा करने के तरीके हैं (या अगर यह नहीं है कि मैं क्या करना चाहिए, मैं इसे कैसे परीक्षण किया जाना चाहिए?)

+0

क्या आपको अपने प्रश्न का उत्तर मिला? हम स्थानीय स्टोरेज उपयोग और हमारे ऑफ़लाइन एप्लिकेशन का परीक्षण करने की कोशिश कर रहे हैं। कभी-कभी हमें ब्राउज़र को फिर से खोलने या किसी अन्य ब्राउज़र में खोलने की आवश्यकता होती है (यह वही ब्राउज़र हो सकता है लेकिन साफ ​​स्थानीय स्टोरेज डेटा और खाली कुकीज़ के साथ)। हमने पहले से ही एक और कांटा (एचटीएमएल 5 सपोर्ट) का कांटा बनाया है और स्थानीय स्टोरेज समर्थन के साथ कैपिबारा-वेबकिट (0.7.2) के साथ विलय कर लिया है। लेकिन अब हमें ब्राउजर चरणों को फिर से खोलने में परेशानी है। – oivoodoo

+0

क्या आपको अपने प्रश्न का उत्तर मिला? –

+0

मुझे कोई जवाब नहीं मिला, लेकिन आखिरकार परीक्षण को खत्म कर दिया गया। माफ़ कीजिये! – sevenseacat

उत्तर

1

आप कुकीज़ को साफ़ कर सकते हैं।

When /^I clear cookies$/ do 
    browser = Capybara.current_session.driver.browser 
    browser.manage.delete_all_cookies 
end 
+2

मुझे लगता है कि परिदृश्य को सत्यापित करने के लिए परिदृश्य समर्थन है और विभिन्न सत्रों में सही ढंग से पढ़ा जाता है, इसलिए कुकीज को साफ़ करने से परीक्षण टूट जाएगा। –

2

मैं Show me the cookies का उपयोग करें।

जोड़ें gem 'show_me_the_cookies' साथ बंडल करने और उसके बाद में World(ShowMeTheCookies) जोड़ने अपने features/support/env.rb

तो बस एक कदम को परिभाषित:

When /^I reopen the browser$/ do 
    expire_cookies 
    visit [ current_path, page.driver.request.env['QUERY_STRING'] ].reject(&:blank?).join('?') 
end 
0

मैं परीक्षण करने के लिए कोशिश कर रहा था वही बात, इसे इस तरह काम मिला:

When(/^I close and reopen the browser$/) do 
    # Get cookies we want to keep 
    remember_me_cookie = page.driver.browser.manage.cookie_named('remember_user_token') 

    # Close the window and delete the cookies 
    page.driver.quit 

    # Reopen the window 
    page.driver.switch_to_window(page.driver.current_window_handle) 

    # Go to our domain and add our cookies back in 
    visit('/') 
    remember_me_cookie.nil? ? @current_user = nil : page.driver.browser.manage.add_cookie(remember_me_cookie) 

    # Refresh the domain to activate the cookies 
    visit('/') 
end 

कुछ बातें:

  • page.driver.quit, कुकीज़ को हटा thats क्यों मैं कुकीज़
  • मैं, page.driver.close_window(page.driver.current_window_handle) का उपयोग कर तो page.driver.switch_to_window(handle) साथ इसे वापस का उपयोग करने जा विंडो बंद करने की कोशिश की के साथ नृत्य कर रही हूँ, लेकिन यह है कि ऐसा नहीं किया काम
  • मैं page.driver.close_window(page.driver.current_window_handle) का उपयोग कर विंडो बंद है, तो एक नई विंडो page.driver.switch_to_window(page.driver.open_new_window) का उपयोग करने जा लेकिन वह

मुझे लगता है काम नहीं किया है कि मैं नहीं कर रहा हूँ की कोशिश की वास्तव में समझते हैं कि कैसे browser/window संबंध कैपिबरा में काम कर रहा है। ऐसा लगता है कि कुकीज़ पर प्रतिलिपि बनाना मेरे एकीकरण परीक्षण को धोखा देने जैसा है। उम्मीद है कि भविष्य के संस्करणों में यह सब हासिल करने का एक बेहतर तरीका है।

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