Rails 3.2.8を使用しています
- 宝石「jquery-rails」、「2.1.2」
- gem 'rails3-jquery-autocomplete', '1.0.9'
- gem 'rspec-rails', '2.11.4'
- 宝石「カピバラ」、「1.1.3」
- gem 'capybara-webkit', '0.12.1'
最近、選択ドロップダウンをオートコンプリートに変換し (rails3-jquery-autocomplete を使用)、リクエスト仕様を更新してオートコンプリートに入力しようとしています。
私のアプローチは、この要点に示すようにヘルパーを作成することでした:
def fill_autocomplete(field, options = {})
fill_in field, :with => options[:with]
selector = "ul.ui-autocomplete a:contains('#{options[:select]}')"
page.should have_selector selector
page.execute_script "$(\"#{selector}\").mouseenter().click()"
end
Webkit でそれをテストすると、テストは次のメッセージで失敗します。
expected css "ul.ui-autocomplete a:contains('Firstname Lastname')" to return something.
Selenium でテストする場合、Firefox でテストの進行を見ていると、ドロップダウンの選択リストが表示されません。ドロップダウンを待つためにa を追加sleep 3
しても役に立ちません。
ここで、capybara-webkit に関連するがやや古い問題があることがわかります。フィールドに入力するとすぐにぼやけてしまい、もちろんオートコンプリートの選択リストが表示されなくなります。しかし、これを機能させた他の人たちとはうまくいかないようです。
rails3-jquery-autocomplete フィールドを含むフォームを RSpec と Capybara でテストすることは現在可能ですか? どのように?id
そうでない場合、フォームが正しいデータを作成することをテストできるように、対応する隠しフィールドに手動で入力する方法はありますか?