私はRailsのにrails3-jquery-autocomplete:RSpecとCapybaraでテストする方法は?
- 宝石 'jqueryのレール'、 '2.1.2'
- 宝石 'rails3-jqueryの - オートコンプリート'、 '1.0.9'
- 宝石と3.2.8を使用しています
- '1.1.3'、宝石 'カピバラ'
- '2.11.4'、 'レールRSpecの' 宝石 'カピバラ-webkitの'、 '0.12.1'
私は最近変換されましたオートコンプリートへの選択ドロップダウン(私たち私の要求仕様を更新してオートコンプリートを記入しようとしています。
this gistに示すように、私のアプローチは、ヘルパーを作成することであった:
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.
私はセレンをテストする場合私がFirefoxでテストを進めるのを見ると、私はではありません。のドロップダウンリストが表示されます。ドロップダウンを待つためにsleep 3
を追加することは役に立ちません。
私はcapybara-webkitに関連しているものの、やや古い問題があることを知っています。フィールドが埋め込まれたときにはすぐにぼやけてしまい、自動完成ピックリストが表示されなくなります。しかし、これはこれを働かせている他の人たちには気にならないようです。
現在、RSpecとCapybaraでrails3-jquery-autocompleteフィールドを含むフォームをテストすることはできますか?どうやって?そうでない場合は、手動で対応する非表示のid
フィールドを入力する方法があるので、フォームが正しいデータを作成することをまだテストできますか?
うん、それはWebkitで動作しませんでした。私はcapybara + poltergeist(webkit env)でそれをテストし、have_selector検証でクラッシュしました。私がスクリーンキャストを取ってそれをデバッグすると、オートコンプリートアイテムが生成されたが、ページオブジェクトはそれを認識できないことを発見しました – raykin
':contains'は有効なW3C CSSセレクタではありませんjQueryのみ)。私はそれをhttp:// stackoverflowにリストされている解決策で修正しました。com/questions/6355586/testing-jquery-autocomplete-ui-with-cucumber私の名前の下に –