0

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)を待っているようです。

find2 番目の代わりに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

withinAJAX リクエストを含むものをテストするときに使用するのは一般的に悪い考えですか? そして、AJAXをAND待機するのと同じことをしているように見えるので、なぜthenwithinの代わりに使用する必要があるのですか?!findfindwithin

ご意見ありがとうございます。

4

2 に答える 2

0

私もこれを経験しました...うまくいくのは、自分の内側の前に検索を行う場合です。Ajax を見つけると、Ajax リクエストがロードされるのを待ちます。読み込まれない場合は、古い要素の参照などを取得します。また、リクエストをトリガーするために .keydown () を実行する必要があるかもしれません。

于 2013-05-16T14:59:45.170 に答える