2011-05-12 10 views
4

私は、Ajaxコンテンツと通常のトグルされたコンテンツをJavascriptでテストします。rails cucumber、rspec、capybaraのビュー(dhtml)でダイナミックパーツをテストする方法は?

私のセットアップは次のとおりです。expampleについては

 
- Rails 3.1 
- Rspec (Edge) 
- Cucumber (Edge) 
- Capybara (Edge) 

、私は、このモデルの特定のタイプが選択されている場合のみ、特定のフィールドを示してフォーム、したい:

条を外付けすることができ記事(URL) または内部。 タイプ「externa_url」は2つの入力フィールドと2つのチェックボックスを表示する必要があります。次にタイプ「article」、 の代わりに本文テキストエリアがあります。

これを実装する最良の方法は、テストでも同様ですか?

特定の記事タイプが選択されている場合は、部分的に読み込まれるようにサーバー側にする必要があります。 またはjavascriptを使用して、必要なhtmlを切り替えますか?

+0

このトピックに関してはすでにスクリーンキャストがありますが、私のニーズに正確には合っていませんので、一般的なベストプラクティスを見るのは非常に難しいです。 – radosch

+1

これはあなたのニーズに合っていますか? http://openmonkey.com/2010/04/09/javascript-testing-with-cucumber-capybara/ – Fran

+0

はい、私は実際にこれだけを見つけました。セレンを使ったテストに関する他の記事の中にあります。 – radosch

答えて

2

実際にFransico(コメント内)に触発され、私は自分の知識を書き留めます。 私自身の答えを書くと、他の人にも役立つかもしれません....

まず、私は質問します。 キュウリとセレン。 ジャスミンによる特定のJavaScriptテスト。

しかし、キュウリ(エッジ)レール(3.1)との統合テスト、あなたはいくつかのものを意識する必要はありカピバラやセレン:あなたはすべてのあなたの宝石が更新されていること

見て、!お持ちでない場合は

1)は、あなたのドライバを有効に

機能/サポート/ capybara.rb瞬間

Capybara.javascript_driver = :selenium 

2)のみのFirefoxレール用webdriverをセレンと< = 4作品ラックのように各コンポーネントをゼロから構成してインストールしてから数時間後にほとんど見つけられなかったように。

3)カピバラ自体はあまり扱いません。リスト、特にjquery-tokeninput。

3.1)私は、リスト内のトークンから項目を選択するためにこれを使用します。これをしようとしない、あなたが代わりを見つけるの「見つける」と、この方法を見つけることができ

When(/^I select the option containing "([^\"]*)" in the Tag List/) do |text| 
    find("li:contains('#{text}')").click 
end 

、API /ドライバを持っていますfindに変更されました。 自動的に待機を検索し、dom検出エレメントに加えてAjax応答をチェックします。

4)あなたのJSのための独自のヘルパー/ファインダー/クリックルーチンの追加/ Ajaxが は心に留めておく、コードを答え、それが「唯一」の統合テストは、あなたがヤスミンまたは別のjsであなたのJSコードをテストすることがありますテストフレームワーク。

Ryan Bates(http://railscasts.com)のスクリーンキャストも詳しく調べるには、Railsのテストに関するいくつかのトピックを取り上げます。 Javascriptの最新のものを確認してください。

またはこのブログ

:これは、同様に他の誰かに役立ちます http://openmonkey.com/2010/04/09/javascript-testing-with-cucumber-capybara/ (サンフランシスコのthnx)

希望。

+1

ようこそ。 AFAIKではセピウム以外のカピバラで他のドライバーを使うことができます。私はakephalos https://github.com/bernerdschaefer/akephalosからかなり良いことを聞いたことがあります。 – Fran

関連する問題