2012-12-30 32 views
1

在下面的示例中,3个have_field规范失败,而2个has_selector传递失败。Rspec has_field在has_selector返回成功时产生错误

describe "without js support", js: false do 
    subject { page }  

    it { should have_selector "form label[for='user_password']", text: "Password" } 
    it { should have_selector "form input#user_password[name='user[password]'][type='password'][required]" } 
    it { should have_field "user_password" } # check by field id 
    it { should have_field "user[password]" } # check by field name 
    it { should have_field "Password" }  # check by field label 
end 

在模板被测试其实我有(JS支持浏览器中禁用):

<label for="user_password" id="label_password">Password</label> 
<input id="user_password" name="user[password]" required="required" type="password" /> 

have_selector规格为通预期,但have_field都没有。为什么?

更有趣的是后我改变一个例子:

describe "with js support", js: true" do 
... 

比所有5种规格变成绿色。这很棒,但我没有任何想法,我的nojs规格有什么问题。

回答

1

好了,我的实验显示,而不是简单地测试have_field

it { should have_field "user_password" } 

我已经测试通过明确设置字段类型

it { should have_field "user_password", :type => :password } 

然后。 (小心!在类型设置中使用:密码,而不是'密码')。

如果你要检查的密码没有价值,这是可以做到像往常一样

it { should have_field "user_password", :type => :password, :with => nil } 
+1

这可能是一个假象':rack_test'与硒的驱动程序,如果您使用的水豚。 – cfeduke

相关问题