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、名前、またはラベル「日」の選択ボックスが見つかりません

編集: ページの 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 フォーム ヘルパーは、日付選択フィールドを一連のデータ パーツに分割します (おそらく from 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日付がどのようにレンダリングされるかを正確に理解してから、カピバラマッチャーを使用してそれらを選択することをお勧めします。

たとえば、日付の選択が '2011/01/01' で、選択が 'Show Date' の場合、次のように記述します。

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

この関連する質問を参照してください。

Rails 3でカピバラを使用して選択ボックスから日付を選択するには?

また、カピバラのマッチャーのドキュメントは ruby​​-doc.info にあります。

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 に答える