@jules'と答えたの修正版:
describe "My page", :js do
it "reloads when it should" do
visit "/"
expect_page_to_reload do
click_link "Reload me"
end
end
def expect_page_to_reload
page.evaluate_script "$(document.body).addClass('not-reloaded')"
yield
expect(page).not_to have_selector("body.not-reloaded")
end
end
EDIT2017-01-19:
実際の質問には奇妙には答えられなかったこの古い回答が見つかりましたが、反対側にしてください(ページにがリロードされていることを確認してください)。
def expect_page_not_to_reload
page.evaluate_script %{$(document.body).addClass("not-reloaded")}
expect(page).to have_selector("body.not-reloaded")
yield
sleep 0.5 # Give it a chance to reload before we check.
expect(page).to have_selector("body.not-reloaded")
end
どちらの答えは、クラスを追加するためのjQueryに依存している:これは、我々は、ページがないリロードをしていることを確認するために我々のアプリで現在何をすべきかです。
ありがとうございました。ジャスミンはJSコードのためのものだと思っていました。ブラウザの一連のイベントのコンテキストでも使用できることを意味しますか? –
これはJavaScriptのテストに使用できます。私はPhantomJSと、FirefoxとChromeの両方に頭を使わずに使ったことがあります。これは、CapybaraにJasmineテストランナーのブラウザをロードさせ、そのページに失敗がないことを主張します。 DOM相互作用のテストに役立つ[jasmine-jquery](https://github.com/velesin/jasmine-jquery)などの便利なライブラリがあります。 –
私はこれを仕事に取り入れました。私はあなたに完全に同意しますが、リロードしていないページはユーザーエクスペリエンスまたは予想される動作の一部であると主張しています。思考? –