10

cucumber/webrat でテストを作成する方法を学んでいます。私のテスト シナリオの 1 つは、フォームの検証をテストするように設定されています (フィールドを空のままにします)。不思議なことに、私が入力していないfill_inフィールドがフィールドのname属性に設定されます。これはキュウリを実行した場合にのみ発生し、ブラウザを使用している場合は発生しません。

私が使用しているステップは簡単です:

When /^I submit the form$/ do
  # Not filling in the 'Name' field here
  fill_in 'Description', :with => 'This is a description'
  click_button 'Save'
end

上記の手順を使用するシナリオを実行すると、テキスト フィールド「名前」が空ではなく「名前」に設定されていることがわかります。これは、そのフィールドに空のスペースまたは を入力した場合にも当てはまりますnil

fill_in 'Name', :with => ''

私がテストしているフォームは非常に単純です:

<form action="/item/create" method="post">
  <div>
    <label for="ItemName">Name</label>
    <input type="text" name="name" id="ItemName" />
  </div>
  <div>
    <label for="ItemDescription">Description</label>
    <textarea name="description" id="ItemDescription"></textarea>
  </div>
  <input type="submit" value="Save" />
</form>

なぜこれが起こっているのですか?

4

3 に答える 3

2

Mechanize アダプターで Webrat を使用していると思いますが、そうですか? もしそうなら、私は同じ問題に非常に不満を感じていました. Webrat がフォーム フィールドの値を Mechanize に渡す方法のバグであることが判明しました。詳細とパッチはこちらにあります: https://webrat.lighthouseapp.com/projects/10503/tickets/384-webrat-does-not-pass-empty-form-fields-correctly-to-mechanize

または、パッチを適用したバージョンの Webrat を使用したくない場合は、少し最適ではない回避策として、代わりに空白 (' ') を使用して fill_in を行い、フィールドが変更されたかどうかを考慮するときに、アプリの入力検証で空白がトリミングまたは無視されるようにします。正しく記入しました。

残念ながら、「公式」Webrat コードベースにマージされていないパッチに貢献した、このような問題がいくつかあるようです。私は約 1 か月半前に作者に電子メールを送り、彼がまだそれを維持しているかどうかを尋ねました。今日まで、私はまだ返事を受け取っていません。

于 2011-08-04T13:46:36.143 に答える
1

試してみることができることの 1 つは、そのフィールドでオートコンプリートがオフになっていることを確認して (autocomplete="off")、それが結果に影響するかどうかを確認することです。

<form action="/item/create" method="post">
  <div>
    <label for="ItemName">Name</label>
    <input type="text" name="name" id="ItemName" autocomplete="off" />
  </div>
  <div>
    <label for="ItemDescription">Description</label>
    <textarea name="description" id="ItemDescription"></textarea>
  </div>
  <input type="submit" value="Save" />
</form>
于 2011-02-03T04:02:48.020 に答える
0

ステップ内でこのようなことを試すことはできますか?

与えられた %{I fill in "name" with ""}

またはさらに良いことに、機能ファイルの使用で

与えられた「名前」を入力します。

カピバラに移行することもお勧めします。次のようなことができます。

https://github.com/jnicklas/capybara/issues/issue/219

これにより、セレン テスト用の Firefox プロファイルを設定できます。

于 2011-02-04T05:18:47.220 に答える