1

Cucumber と Webrat を使い始めたばかりで、既存の Rails アプリケーションに機能仕様を追加しています。アプリの 1 つのページには複数のフォームがあり、新しい Character オブジェクトを構築するさまざまな方法を表しています。簡単な例を次に示します。

<form id="adopt_character_form">
    ....
    <input type="text" name="character[name]" id="character_name">
    ...
</form>

<form id="spawn_character_form">
    ....
    <input type="text" name="character[name]" id="character_name">
    ...
</form>

ご覧のとおり、ページには同じ名前と ID を持つ (少なくとも) 2 つのフィールドがありますが、それらは異なる形式ですが、Webrat rdoc またはソース コードで特定のフィールドを指定する方法が見つかりません。 1。

そのうちの 1 つの名前または ID を変更できることはわかっていますが、そのためには Rails の命名規則から逸脱する必要があり、実際には変更したくありません。フォームを別のページに配置することもできますが、必要以上にワークフローを変更する必要があります。また、それらをよりモジュール化された動的な単一のフォームにマージしようとすることもできますが、特定のテスト フレームワークをサポートするためだけに UI に構造的な変更を加えなければならないことは少し疑問に思われ、常に実行可能であるとは限りません。 JavaScript を要求します。

Webrat でこれらのフィールドの 1 つを指定する方法はありますか? それとも、あきらめて別のプロジェクトで Cucumber を試す必要がありますか?

4

2 に答える 2

1

webratswithinメソッドを使用できます

たとえば、キュ​​ウリの手順ファイルでは

#my_steps
Then /^I update character name with  "([^\"]*)"$/ do |updated_character|
  within '#adopt_character_form'
     fill_in "character[name]", :with => updated_character
  end
end

それが役立つことを願っています

于 2010-01-14T21:14:25.423 に答える
1

同じ ID を持つ複数の要素を持つことは、HTML の妥当性に対する明示的な違反であることを考えると、Rails の慣習からすでに逸脱していると思います。Rails の最近のバージョンでは、標準に準拠するように努めています。IIRC では、ID が区別されるような方法でフォーム ヘルパーを呼び出すのは非常に簡単です。他に何もない場合は、各呼び出しで明示的な ID を指定するだけです。Rails の規約name上、問題となるのはフィールドだけです。これは、Rails がモデルのフィールド名にマップし直さなければならないフィールドだからです。

于 2009-10-26T21:20:21.467 に答える