2011-01-14 8 views
10

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

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

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 

上記の手順を使用して、シナリオを実行した後、私は、テキストフィールド「名前」が「名」の代わりのものに設定されていることがわかります空の。

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> 

なぜこれが起こっているすべてのアイデアこれは私が何もない空間やnilとそのフィールドに記入した場合も同様ですか?

+0

+1興味深い問題です。誰かがこれを理解するまで待つことはできません。 – raidfive

+0

名前を記入しても説明はできません。私はあなたがラベル、属性、および値がすべて "名前"である辺のケースをヒットしたのだろうかと疑問に思っています –

+0

@マーク、名前は記入しても説明は記入しないでください。そのフィールドの名前属性の値である「description」を含む。 – dmondark

答えて

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ヵ月半ほど前に著者に電子メールを送って、彼がそれをまだ維持しているかどうか尋ねました。もしそうでなければ、多くの人々がまだそれを使用している人を呼び出すことを検討してください。今日まで、私はまだ応答を受けていません。

+0

Miquel、あなたの答えとパッチをありがとう。それは問題を解決する(ええ、私は/ Machanizeを使用していた)。私はそれ以来、私たちがカピバラに切り替えたことに言及しなければなりません。カピバラはかなり安定していて、ドライバーを扱う方法はきれいです。私はWebratがもはや維持されていないと聞いてきましたが、私はそれを確認できません。 – dmondark

1

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

+0

私たちはそれをやらなければなりませんでした。なぜなら、Firefoxのオートコンプリートがテストでフィールドを埋めていたからです。また、パスワードフィールドを持っている場合は、フォームフィルのキャッシュにパスワードを入力するだけでなく、パスワードの前にテキストフィールドを入力します。フィールドの名前が何であっても、form-fillキャッシュ – Ben

+0

ダングは、それを追跡するのが難しいようです:/あなたは別のユーザープロファイルやシークレットでこれを防ぐためにFirefoxを起動できますか? – raidfive

+0

これはセレンを使用したときのテストスイートに含まれていました。別のプロファイルで実行するように指示する方法が不明です。 ** autocomplete = "off" **は私たちの問題を修正したため、必要ではなかったし、とにかくオートコンプリートしたくないフィールドだった。 – Ben

0

手順の中でこれを試すことはできますか? "" と名前 "私は記入与えられた特徴ファイル使用中の

あるいはさらに良い、

考えると%{私は" と "名" を記入}」。

私はまた、あなたがこのようなことを行うことができ、カピバラに移動することをお勧め:

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

あなたのセレンテスト用にFirefoxプロファイルを設定できるようになります。

+0

タイラーに感謝します。私はすでに空の文字列(および無し)を渡してみましたが、それでもフィールド名でそれを埋めるでしょう。私は確かにカピバラを調べますが、私はファイアフォックス/セレンを使用していません。現時点では、私たちだけです。 – dmondark

関連する問題