2012-03-11 3 views
1

webrat에서 확인란을 볼 수없는 문제가 있습니다. 이 생산레일 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"> 

체크 박스가 표시되지 않습니다 나는 이유를 모르겠어요. 나는 checkbox로 html funkyness 때문에 그것들을 체크 할 수 있다고 생각했지만, 아무런 효과가없는 것 같았다. 내가 할 경우

편집 한 내가 아는 어떤이는 :

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에 데이터가로드되어 있습니까? 또 다른 옵션은 테스트를 위해 데이터를 조롱하거나 공장 또는 원시 AR 생성을 사용하여 테스트 용 데이터를 만드는 것입니다.

+0

이것은 답변입니다! 이전에 데이터를 추가하지 않았습니다 (: 각) – ryanjones

0

AFAIK 컨트롤러 사양은 기본적으로보기를 렌더링하지 않습니다. "get : index"뒤에 "render"를 호출하면 뷰가 렌더링되어야합니다. 그러면 사양이 느려질 것입니다.

실제로이 테스트는 실제로 뷰 스펙에 속할 수 있습니다.

+0

컨트롤러 상단에 render_views가 있습니다. 나는 그것이 똑같은 일을하는 도우미라고 생각한다. 다른 모든 테스트는 잘 작동합니다 (예 : "Availability"라는 단어가 있는지 확인하십시오.) – ryanjones

관련 문제