1

如何使用集成 rspec 测试测试以下代码(我也在使用水豚)?

 1 <%= form_for [@project, @task] do |f| %>

 17   <p>
 18     <%= f.date_select(:target_date,
 19                       :default => Date.today,         
 20                       :order => [:day, :month, :year], :start_year => Date.today.year, 
 21                       :end_year => Date.today.year + 3) %>
 22   </p>                
 23 
 24   <%= f.submit %>
 25 
 26 <% end %>

到目前为止,我有以下代码......

select '28', :from => :day 

...但它说 >无法选择选项,没有找到带有 id、名称或标签“day”的选择框

编辑:在查看页面的 HTML 输出时,我注意到 Rails 会自动将 id 添加到日、月和年字段中......例如,日的输出看起来像这样......

<select id="show_date_3i" name="show[date(3i)]"><option value="1">1</option>

但是当我再次这样做时......

select '28', :from => :show_date_3i

...它说>>>无法选择选项,没有找到带有ID,名称或标签'show_date_3i'的选择框...这是为什么?

4

2 回答 2

3

Rails Form Helpers 将日期选择字段分解为一组数据部分——可能将它们命名为1ito——6i它们代表数据时间的年、月、日、小时、分钟和秒。

对于日期,仅使用年、月和日期部分。

所以给定你的表单助手标签:

 <%= f.date_select(:target_date,
                    :default => Date.today,         
                    :order => [:day, :month, :year], :start_year => Date.today.year, 
                    :end_year => Date.today.year + 3)
%>

我建议您首先了解 html 日期是如何在选择框中呈现的,然后使用 capybara 匹配器来选择它们。

因此,例如,如果您选择的日期是“2011/01/01”,而您的选择是“显示日期”,那么您会写:

select '2011/01/01', :from => 'Show Date'

请参阅此相关问题:

如何在 Rails 3 中使用 Capybara 从选择框中选择日期?

ruby-doc.info 上的 capybara matchers 文档:

http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers

于 2012-05-12T12:31:47.843 回答
1

试试这个

select '28', :from => 'task[target_date]'

或给选择一些特殊的ID

<%= f.date_select(:target_date,
                :default => Date.today,         
                :order => [:day, :month, :year], 
                :start_year => Date.today.year, 
                :end_year => Date.today.year + 3,
                :id => 'task_target_date') %>

然后尝试

select '28', :from => 'task_target_date'
于 2012-05-12T12:30:22.627 回答