簡體   English   中英

在Capybara Rails中等待重定向

[英]Waiting for redirect in Capybara Rails

我正在我的網站上進行一些集成測試,這是在Spree內置的。 我正在使用RSpec + Capybara進行這些測試。

我發現在較新版本的Capybara中,wait_until已從源代碼中刪除,因為不再需要以這種方式等待AJAX​​請求。 不知何故,現在Capybara足夠聰明,等待AJAX​​請求。

我正在做的很簡單:

visit product_path(product)
  within '.vip-buy-content' do
    first('.buy-button').click
  end
expect(page.current_path).to eq(cart_path)

單擊該按鈕時,將完成AJAX請求。 完成AJAX請求后,會發生重定向。

然而,期望失敗,因為似乎Capybara將比AJAX請求和重定向更快地處理它。

如果在期望值之上添加“sleep 10”,則規范將通過,因為它有足夠的時間來處理它。

我想要一個更好的方法來等待重定向。 有任何想法嗎?。

我不知道這是否會解決這個問題,但我通常會在support文件夾中添加一個wait_for_ajax.rb文件,並創建一個這樣的模塊。

module WaitForAjax
  def wait_for_ajax
    Timeout.timeout(Capybara.default_wait_time) do
      loop until finished_all_ajax_requests?
    end
  end

  def finished_all_ajax_requests?
    page.evaluate_script('jQuery.active').zero?
  end
end

RSpec.configure do |config|
  config.include WaitForAjax, type: :feature
end

然后添加

visit product_path(product)
  within '.vip-buy-content' do
    first('.buy-button').click
  end
  wait_for_ajax
expect(page.current_path).to eq(cart_path)

我在假設你正在使用:js => true在你的描述塊上。 希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM