如何使用集成rspec测试来测试以下代码(我也使用capybara)?
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
...但它说&gt; 无法选择选项,没有包含ID,名称或标签“发现日期”的选择框
编辑:在查看页面的HTML输出后,我注意到Rails会自动将id添加到日,月和年字段...... 例如,今天的输出看起来像这样......<select id="show_date_3i" name="show[date(3i)]"><option value="1">1</option>
但是当我这样做时......
select '28', :from => :show_date_3i
...它说&gt;&gt;&gt; 无法选择选项,找不到包含ID,名称或标签'show_date_3i'的选择框 ...为什么会这样?
答案 0 :(得分:3)
Rails表单助手将日期选择字段分解为一组数据部分 - 可能将它们从1i
命名为6i
- 它们代表年,月,日,小时,分钟和秒数据时间。
对于日期,仅使用年,月和日期的作品。
所以给出你的表单助手标签:
<%= f.date_select(:target_date,
:default => Date.today,
:order => [:day, :month, :year], :start_year => Date.today.year,
:end_year => Date.today.year + 3)
%>
我建议您首先了解exaclty如何在选择框中呈现html日期,然后使用capybara匹配器来选择它们。
因此,例如,如果你的日期选择是'2011/01/01'而你的选择是'显示日期',你会写:
select '2011/01/01', :from => 'Show Date'
请参阅此相关问题:
How to select date from a select box using Capybara in Rails 3?
水豚在ruby-doc.info:
匹配文档http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers
答案 1 :(得分: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'