4

Javascriptを使用してAjaxコンテンツと通常の切り替えコンテンツの両方をテストしたいと思います。

私のセットアップは次のとおりです。

-レール3.1
-Rspec(エッジ)
-きゅうり(エッジ)
-カピバラ(エッジ)

たとえば、このモデルの特定のタイプが選択されている場合に、特定のフィールドのみを表示するフォームが必要です。

記事は、外部記事(url)または内部記事にすることができます。「externa_url」と入力すると、2つの入力フィールドと2つのチェックボックスが表示され、代わりに本文のテキストエリアがある「article」と入力します。

これを実装するための最良の方法は、テストも行いますか?

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

4

1 に答える 1

2

実際に(コメントで)フランシコに触発されて、私は自分の知識を書き留めます. 私は自分の答えを書いています。他の人にも役立つかもしれません....

最初に言及したいのは、私は私の質問に次のように答えることです – 統合テストのみを行う. きゅうりとセレン入り。ジャスミンを使用した特定の JavaScript テスト。

ただし、cucumber (edge) rails (3.1)、capybara、および selenium との統合テストでは、いくつかのことに注意する必要があります。

ほら、すべての宝石が更新されていることを確認してください!

1) ドライバをまだ有効にしていない場合は有効にします

features/support/capybara.rb

Capybara.javascript_driver = :selenium

2) 現時点では、Firefox <=4 のみが Rails 用の webdriver selenium で動作します。これは、ラックなどの各コンポーネントを最初から構成およびインストールするのに何時間も費やした後でもほとんどわからないためです。

3)カピバラ自体はあまり処理しません。これは、リスト、特にjquery-tokeninputなどのクリックに役立ちます。

3.1) リスト内のトークンからアイテムを選択するためにこれを使用します。

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

このメソッドは、find ではなく「locate」で見つかる場合があります。これを試さないでください。api / ドライバーが find に変更されています。Find は自動的に待機し、dom 検索要素に加えて Ajax 応答をチェックします。

4) JS / Ajax 応答コードに独自のヘルパー / ファインダー / クリック ルーチンを追加します。これは「単なる」統合テストであることに注意してください。JS コードを yasmine または別の js テスト フレームワークでテストすることをお勧めします。

詳細については、Ryan Bates (http://railscasts.com) の Screencasts も参照してください。Rails のテストに関するいくつかのトピックをカバーしています。Javascriptの最新のものを確認してください。

またはこのブログ: http://openmonkey.com/2010/04/09/javascript-testing-with-cucumber-capybara/ (thnx francisco)

これが他の誰かにも役立つことを願っています。

于 2011-06-03T06:28:09.450 に答える