2011-11-23 35 views
1

異步Javascript,則水豚README給人的東西,將等待阿賈克斯下面的例子:如何在不使用rspec的情況下觸發水豚的自動AJAX等待?

page.should have_text('baz') 

這是一個RSpec建設,但我使用測試::單位+早該。 Test :: Unit/shoulda中有什麼等價物?這是我的代碼:

assert_equal 'foo', find('.bar').text 

之前的行會觸發Ajax事件。如果在ajax完成後執行,我的斷言將會成功,但如果之前失敗,則斷言將失敗。我如何告訴它繼續重試,直到它成功或超過Capybara.default_wait_time?

回答

3

即使花了24小時審覈我的帖子,因爲土耳其日,水母郵件列表的工作比堆棧溢出更好。這裏是Jonas Nicklas' response

assert page.has_text?('test') 

注意,負形式是:

assert page.has_no_text?('test') 

和NOT:

assert !page.has_text?('test') 

這是錯誤的,不這樣做。 RSpec的時下沒有這個問題 了,所以它的安全的話:

page.should_not have_text('test') 

/喬納斯

0

我也沒弄清楚別的東西的工作。我喜歡喬納斯的答案,但是這也適用:自從發現拋出異常的 失敗

assert find('.bar:contains("foo")') 

的說法是沒有必要的,它只是文件,這是一個考驗。

3

我用水豚和硒wait_until點擊某處或訪問一個新的路徑後:

somebutton.click 
wait_until { something to be true } 

somebutton.click 
wait_until(n) { something to be true } 

其中 「n」 是的秒數等待

+1

請注意,大多數斷言在水豚做一個等待和主張。一石二鳥,提供更多可讀代碼。 –

+3

不鼓勵使用wait_until,請參閱http://www.elabs.se/blog/53-why-wait_until-was-removed-from-capybara – Martijn

相關問題