AJAX 仕様とwithin
/に問題がありますfind
。
私は次のことをしたいと思います:
it 'allows to load more search results if there are any', focus: true, js: true do
fill_in 'search_term', with: '*'
click_button 'Search projects' # Sends a POST request
within 'table.projects' do
page.should have_content '1 of 2'
click_link 'Load more' # Sends an AJAX request
end
within 'table.projects' do
page.should have_content '2 of 2'
page.should have_link('Load more', visible: false)
end
end
悲しいことに、これは機能しません.2番目within
はAJAX呼び出しが完了するのを待っていないようですが、1番目は「通常の」POSTリクエスト(非AJAX)を待っているようです。
find
2 番目の代わりにa を使用するwithin
と、問題が解決するようです。
it 'allows to load more search results if there are any', focus: true, js: true do
fill_in 'search_term', with: '*'
click_button 'Search projects' # Sends a POST request
within 'table.projects' do
page.should have_content '1 of 2'
click_link 'Load more' # Sends an AJAX request
end
find 'table.projects' do # find instead of within here!
page.should have_content '2 of 2'
page.should have_link('Load more', visible: false)
end
end
within
AJAX リクエストを含むものをテストするときに使用するのは一般的に悪い考えですか? そして、AJAXをAND待機するのと同じことをしているように見えるので、なぜthenwithin
の代わりに使用する必要があるのですか?!find
find
within
ご意見ありがとうございます。