Ruby on rails 如何测试表单文本字段是否没有值?

Ruby on rails 如何测试表单文本字段是否没有值?,ruby-on-rails,rspec,capybara,rspec-rails,Ruby On Rails,Rspec,Capybara,Rspec Rails,如何测试没有值的文本表单字段,如以下情况: <input class="string required" id="student_name" name="student[name]" size="50" type="text" /> 我尝试指定“:value=>nil”,但没有成功 have_selector()上的文档非常少,因此无法在其中找到任何内容,也无法通过搜索找到任何示例(可能是使用错误的术语进行搜索) 根据建议,我也尝试了:value=>'',但得到了以下

如何测试没有值的文本表单字段,如以下情况:

<input class="string required" id="student_name" name="student[name]"
       size="50" type="text" />
我尝试指定“:value=>nil”,但没有成功

have_selector()上的文档非常少,因此无法在其中找到任何内容,也无法通过搜索找到任何示例(可能是使用错误的术语进行搜索)

根据建议,我也尝试了
:value=>''
,但得到了以下错误消息:

expected following output to contain a <input type='text' name='vendor[name]' value=''/>
 NoMethodError:
   undefined method `include?' for nil:NilClass
回答
解决方案是使用
:value=>“
:value=>”


在我的案例中,它最初不起作用的原因是我在Gemfile中包含了webrat和水豚宝石。删除webrat后,它可以使用两种解决方案工作。

尝试将该值指定为“”


@Unixmonkey在评论中所说的应该有效。您还可以执行以下操作:

page.first(:css, "#student_name")[:value].should be_nil
编辑哦,我猜@Unimonkey的评论根据您的更新不起作用,但上面的内容会起作用-我已经测试过了

编辑2条评论由于您在视图规范中,请尝试以下操作:

selector = css_select("#student_name").first
selector["value"].should be_nil

谢谢你的建议,但那也不行。我用尝试
:value=>''和
:value=>nil
的结果更新了原始问题。您的建议现在起作用了-请参阅下面我的评论以了解Sarvesh Kumar Singh的建议。我尝试了您的建议并得到以下错误:
名称错误:未定义的局部变量或#
奇数的方法“page”。你用的是Rspec和水豚,对吗?嗯,这是视图规范还是请求规范?是的。使用Rspec和水豚。这是一个视图规范:
new.html.erb_spec.rb
哦,我明白了。是
页面
仅在请求规范中可用。对不起,我应该先问一下。查看我的新编辑。没问题。谢谢你的建议。请参阅我对Sarvesh Kumar Singh的建议的评论,以了解我的根本问题以及解决方案。谢谢。这是可行的,但看起来问题的根本原因是我在Gemfile中同时包含了webrat和水豚宝石。我删除了webrat,并且能够成功地使用
:value=>“
:value=>”
进行测试。
it "should display an enmpty field for the student name" do
    rendered.should have_selector("input", :type => "text",
                                     :name => "student[name]",
                                     :value => "")
end
page.first(:css, "#student_name")[:value].should be_nil
selector = css_select("#student_name").first
selector["value"].should be_nil