如何使用集成 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
...但它说 > 无法选择选项,找不到带有 ID、名称或标签“day”的选择框
编辑:在查看页面的 HTML 输出时,我注意到 Rails 自动将 id 添加到日、月和年字段... 例如,day 的输出如下所示...
<select id="show_date_3i" name="show[date(3i)]"><option value="1">1</option>
但话又说回来,当我这样做...
select '28', :from => :show_date_3i
...它说 >>> 无法选择选项,找不到带有 ID、名称或标签“show_date_3i”的选择框...这是为什么?
最佳答案
Rails Form Helpers 将日期选择字段分解为一组数据部分——可能将它们命名为 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)
%>
我建议您先了解 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 上的 capybara 匹配器文档:
http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers
关于ruby-on-rails - 如何使用 rspec 测试选择日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10563727/