2012-03-11 26 views
1

私はwebratがチェックボックスを見ることができない問題に遭遇しています。Rails rspec/webrat - チェックボックスが表示されない

= form_for(@advanced_search, :url => searches_path, :method => 'get', :html => {:class => 'well', :id => 'advanced-search'}) do |f| 
Availability 
      - @advanced_search.availability_types.each do |avail_type| 
      = check_box_tag "search[availability_types][kind][#{avail_type.id}]", avail_type.id, checked = true, :class => 'checkbox' 
      = avail_type.kind 

この生成します: checkboxes

それはすべての有効なHTML、および機能の作品だが、私はこのようないくつかのコード(HAML)を持っています。しかし、私はそれをテストするために行くと、私は応答のチェックボックスのいずれも表示されません。

例のテスト:

it "should have checkboxes" do 
    get :index 
    response.should have_selector("form") do |node| 
    node.should have_selector('input', :type => 'checkbox') 
    end 
end 

出力:

expected following output to contain a <input type='checkbox'/> tag: 
Availability 
<br><input class="btn" name="commit" type="submit" value="Search"> 

チェックボックスは表示されませんし、私はなぜわかりません。私はそれらをチェックしてマークすることは、チェックボックスを使ったhtmlのファンキーなのでそれをするかもしれないと思ったが、何の効果もないようだ。私がしなければ

編集1 は、私が知っている何、これは:

Availability 
     - @advanced_search.availability_types.each do |avail_type| 
     = check_box_tag "search[availability_types][kind][#{avail_type.id}]", avail_type.id, checked = true, :class => 'checkbox' 
     = avail_type.kind 
     = check_box_tag "search[availability_types][kind][8]", 8, checked = true, :class => 'checkbox' 

非動的に生成されたチェックボックスが罰金を示しています。

Availability 
<input checked class="checkbox" id="search_availability_types_kind_8" name="search[availability_types][kind][8]" type="checkbox" value="8"> 

編集2

テストデータベースのデータが失われていました... Doh。私は前に、これらの作成を追加し、私のチェックボックスが表示されます。

before(:each) do 
    AvailabilityType.create!({:kind => 'Full-time'}) 
    AvailabilityType.create!({:kind => 'Part-time'}) 
    AvailabilityType.create!({:kind => 'No Availability'}) 
end 

答えて

2

availability_typesがActiveRecordテーブルからロードされているようですか?もしそうなら、あなたはそのテーブルにロードされたデータを持たないかもしれないと思うので、タイプavailability_typesを反復しているときにブロックを入力することさえありません。

spec/fixtures/availability_types.ymlにデータがありますか?もう1つの選択肢は、そのテストのためにそのデータを模擬したり、テスト用のデータを作成するためにファクトリまたはraw AR作成を使用することです。

+0

これは答えです!私は以前の(:each)のデータを追加していませんでしたが、 – ryanjones

0

AFAIKコントローラの仕様では、デフォルトでビューがレンダリングされません。 "get:index"の後に "render"を呼び出し、ビューをレンダリングする必要があります。これは仕様を少し遅くします。

実際、このテストは実際にはビュー仕様に属している可能性があります。

+0

私はコントローラの上部にrender_viewsを持っています。私はそれが同じことをするヘルパーだと思う。 – ryanjones

関連する問題