0

次の場合のように、値のないテキスト フォーム フィールドをどのようにテストしますか。

<input class="string required" id="student_name" name="student[name]"
       size="50" type="text" />

値が存在するかどうかはわかっています。

<input class="string required" id="student_name" name="student[name]"
       size="50" type="text" value="John" />

また、フォーム フィールドに「John」という名前が事前に入力されていることを次のようにテストして確認できます。

it "should display an enmpty field for the student name" do
  rendered.should have_selector("input", :type => "text",
                                         :name => "student[name]",
                                         :value => "John")
end

「:value => nil」を指定してみましたが、うまくいきませんでした。

have_selector() に関するドキュメントは非常にスリムであるため、そこには何も見つけることができず、検索で例を見つけることもできませんでした (間違った用語で検索した可能性があります)。

提案に従って、私も試し:value => ''ましたが、次のエラーメッセージが表示されます。

expected following output to contain a <input type='text' name='vendor[name]' value=''/>

試し:value => nilてみると、次のエラーメッセージが表示されました。

 NoMethodError:
   undefined method `include?' for nil:NilClass

回答解決策は、 または のいずれか
を使用することでした。:value => "":value => ""

私の場合、最初はうまくいかなかったのは、Gemfile に webrat と capybara の両方の gem を含めていたためです。webrat を削除した後、両方のソリューションを使用して機能しました。

4

2 に答える 2

0

コメントで@Unixmonkeyが言ったことはうまくいくはずです。次のこともできます。

page.first(:css, "#student_name")[:value].should be_nil

編集ああ、@Unimonkeyのコメントはあなたの更新に従って機能しなかったと思いますが、上記は機能します-私はそれをテストしました.

編集 2 Re: コメントビュー仕​​様にいるので、代わりにこれを試してください:

selector = css_select("#student_name").first
selector["value"].should be_nil
于 2012-05-04T14:32:05.880 に答える
0

値を "" として指定してみてください

it "should display an enmpty field for the student name" do
    rendered.should have_selector("input", :type => "text",
                                     :name => "student[name]",
                                     :value => "")
end
于 2012-05-04T14:31:20.013 に答える