我有一個失敗的Rails集成測試,我不明白爲什麼。我使用硒水銀作爲司機。異步JavaScript的水豚一體化測試
在AJAX調用發生後,測試檢查頁面內容已被刪除。相關的操作是單擊一個按鈕,並且該按鈕單擊會導致頁面的一部分通過jQuery remove()
調用被刪除。以下是集成測試代碼的近似值:
click_button("Remove stuff")
assert has_no_link?("This should be removed")
斷言失敗,意味着鏈接仍然存在。
我一直在讀水豚,我知道你可以延長默認的等待時間。我已經將它擴展到一個荒謬的價值(20秒),並且仍然斷言失敗。
當我手動按照測試過程我自己,在源頁面仍顯示的內容,但DOM不(通過查看Firefox的DOM查看和尋找的元素)。這是問題嗎?我甚至嘗試檢查DOM ,而測試在Firefox中運行,以檢查內容是否存在,並且看起來不是這樣。
我不知道Capybara是如何找到這個不再存在於DOM中的鏈接的。 Capybara檢查源代碼而不是DOM並在那裏找到鏈接?如果是這樣,我不知道如何解決這個測試,以確保測試通過。刷新頁面將解決問題,但這不完全是一個用戶會做什麼,所以我猶豫改變頁面只是爲了使測試通過...
會愛如何解決這個問題的任何建議。
謝謝!
你終於找到了解決問題的辦法嗎?我有一個類似的,我想知道你是否可以對我有任何幫助。 –
不幸的是,不幸的是沒有。我花了太多時間讓單個測試工作,所以我最終只是評論它而不是修復它。對不起,我無法提供更多的幫助......我已經花了很多時間,沒有精力去深入探索!隨意回答這個問題,如果你想出來,我會很樂意給你信用! – aardvarkk
您是否記得在您的rspec中包含'js:true'? – RubeOnRails