如何测试没有值的文本表单字段,例如以下情况:
<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 =&gt; 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宝石。删除webrat后,它使用两种解决方案。
答案 0 :(得分:0)
尝试将值指定为“”
it "should display an enmpty field for the student name" do
rendered.should have_selector("input", :type => "text",
:name => "student[name]",
:value => "")
end
答案 1 :(得分:0)
@Unixmonkey在评论中说的应该有效。你也可以这样做:
page.first(:css, "#student_name")[:value].should be_nil
编辑哦,我猜@ Unimonkey的评论根据您的更新无法正常运行,但上述内容将有效 - 我已经测试过了。
编辑2回复:评论请尝试此操作,因为您处于视图规范中:
selector = css_select("#student_name").first
selector["value"].should be_nil