e コマース サイトで、ユーザーが [チェックアウト] を 2 回押して、カードに 2 回請求されることがあるという問題があります。
これは十分に一般的なバグであり、簡単に修正できますが、カピバラのセットアップで解決策をテストしたいと思います. click_button('checkout') を呼び出したら、ブラウザの [戻る] ボタンを押したユーザーのふりをして、もう一度 click_button('checkout') を呼び出すことはできますか?
e コマース サイトで、ユーザーが [チェックアウト] を 2 回押して、カードに 2 回請求されることがあるという問題があります。
これは十分に一般的なバグであり、簡単に修正できますが、カピバラのセットアップで解決策をテストしたいと思います. click_button('checkout') を呼び出したら、ブラウザの [戻る] ボタンを押したユーザーのふりをして、もう一度 click_button('checkout') を呼び出すことはできますか?
あなたは試してみたいかもしれません:
When(/^I go back$/) do
page.evaluate_script('window.history.back()')
end
これには、javascript 対応ドライバー (selenium/celerity/akephalos) でシナリオを実行する必要があります。
gemを介してカピバラ JavaScript ドライバーとして webkit を使用している場合page.driver.go_back
は、を使用できます。にも必要です。capybara-webkit
:js => true
scenario
私はWebratでこの方法を使用しました。カピバラでも同様のことがうまくいくと確信しています。
When(/^I go back$/) do
visit request.env['HTTP_REFERER']
end
補足:「redirect_to :back」メソッドは、何らかの理由で機能しませんでした。
ありがとう!この質問と回答は私を大いに助けてくれました!
@Jake Malloryの回答に追加するだけで、セレンは現在カピバラの一部であり :js => true
、これらの2つのチュートリアルで説明されているように、追加することで(おそらくさらにいくつかの調整を加えることで)テストでjavascriptをかなり簡単に実行できます。
http://www.opinionatedprogrammer.com/2011/02/capybara-and-selenium-with-rspec-and-rails-3/ http://railscasts.com/episodes/257-request-specs-and-capybara?ビュー=asciicast