2011-09-11 16 views
10

私はユーザーの「Remember me」タイプの機能をテストするためにキュウリ試験を書いています。実生活では、ブラウザを閉じてブラウザを開いてサイトに戻ってきます。キュウリ/カピバラでブラウザを閉じる/再オープンすることをシミュレートしますか?

私のテストでは、これまでに次のようになります。

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 

I「のとき、私は、ブラウザ閉じてから再度開く」ステップ定義をするために記入するかわからないが。

誰もが、私はこれを行うだろうか知っています(または、これは私がやるべきものではない場合、どのように私はそれをテストする必要がある?)

+0

あなたの質問に答えが見つかりましたか? localStorageの使用状況とオフラインアプリケーションをテストしようとしています。ブラウザーを再オープンするか別のブラウザーで開く必要があります(同じブラウザーでも構いませんが、クリーンなローカルストレージのデータとクッキーは空です)。我々は既に別のフォーク(html5サポート)のフォークを作成し、localStorageをサポートするcapybara-webkit(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'とバンドルしてからfeatures/support/env.rb

World(ShowMeTheCookies)を追加します:

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.switch_to_window(handle)とそれに戻っ切り替え、その後、page.driver.close_window(page.driver.current_window_handle)を使用して、ウィンドウを閉じてみましたが、それはしませんでした
    • 働く私は、新しいウィンドウpage.driver.switch_to_window(page.driver.open_new_window)への切り替え、page.driver.close_window(page.driver.current_window_handle)を使用して、ウィンドウを閉じてみましたが、それは

    を動作しませんでした私はないですような気がしますカピバラでの関係が実際どのように働いているのかを実際に理解しています。また、クッキーのコピーは、私の統合テストを不正にするようなものです。うまくいけば、将来のバージョンでこれをすべて達成するためのより良い方法があります。

  • 関連する問題