2012-05-18 90 views
1

我有一个带有确认字段的表单页面,其中包含电子邮件地址和密码,两者都带有“确认”标签。如预期的那样,使用RSpec运行时会失败。如果我使标签唯一,例如将电子邮件标签更改为“电子邮件确认”,则该标签将通过。我宁愿让标签保持不变。如果我使用form_for生成的电子邮件ID,水豚似乎很高兴,但测试失败。我也试着用相同的结果命名。水豚不会填写有重复标签的字段

RSpec的/水豚提取物:

fill_in "company_contact_email_confirmation", with: "[email protected]" 

的form_for提取物:

<div class="field"> 
    <%= f.label :contact_email_confirmation, "Confirmation" %><br /> 
    <%= f.email_field :contact_email_confirmation %> 
</div> 

生成的源:

<div class="field"> 
    <label for="company_contact_email_confirmation">Confirmation</label><br> 
    <input id="company_contact_email_confirmation" name="company[contact_email_confirmation]" size="30" type="email"> 
</div> 

错误消息:

1)公司的网页立即登记与VA盖信息应该创建一个公司

Failure/Error: expect { click_button submit }.to change(Company, :count).by (1) 
    count should have been changed by 1, but was changed by 0 

如果我用的水豚within,因为已经建议其他地方在这里,它仍然不能正常工作:

RSpec的/水豚提取物:

within ".email_stuff" do 
    fill_in "Confirmation", with: "[email protected]" 
end 

的form_for提取物:

<div class="email_stuff"> 
    <div class="field"> 
    <%= f.label :contact_email_confirmation, "Confirmation" %><br /> 
    <%= f.email_field :contact_email_confirmation %> 
    </div> 
</div> 

生成源:

<div class="email_stuff"> 
    <div class="field"> 
    <label for="company_contact_email_confirmation">Confirmation</label><br /> 
    <input id="company_contact_email_confirmation" name="company[contact_email_confirmation]" size="30" type="email" /> 
    </div> 
    </div> 

水豚似乎没有抱怨,但测试失败,同样的错误。我如何让水豚允许我在同一表格上使用同一标签两次?

+0

仅用于测试,在您定义测试的位置添加此“:js => true”以可视化浏览器中会发生的情况(将出现一个页面) – cristian

+0

我在使用硒webdriver时遇到了很多麻烦与Firefox一起运行。经过很多努力,(最终火狐10和硒webdriver 2.20.0)我得到一个页面弹出“无法维护安全连接”或类似的东西,然后立即关闭。测试然后在第一个fill_in字段上的Capybara :: ElementNotFound上失败,这是不正确的,因为没有测试通过的重复标签。 –

回答

0

我在ActiveRecord after_validation回调中添加了一些调试语句来查看虚拟确认字段的状态。如上面我的代码所示,我通过名称或ID引用了电子邮件确认字段,但不包含带ID的密码确认和电子邮件确认字段。由于电子邮件确认字段是第一个在表单上,​​水豚把密码数据放在了错误的确认字段中。如果我将密码字段上的ID,它会起作用。两个ID都是最安全的。