Rspec 여러 select 태그의 테스트를 실행할 때의주의

4066 단어 RSpecRails

테스트를 실행하려는 해당 코드



투어 정보를 투고할 때 장르를 선택하여 저장하도록 하고 있다.
select 태그에서 value가 1인 option을 선택하여 장르를 저장하는 테스트를 해보고 싶다.


어떤 페이지를 참고로 HTML에 표시되는 내용(이하라면 모험)을 입력해 테스트 달리게 해 보았다.

tour_spec.rb
it 'tour投稿に成功する' do
  select '冒険', from: 'tour[genre_id]'
end

빠진 오류


Failure/Error: select '冒険', from: 'tour[genre_id]'
     Capybara::ElementNotFound:
       Unable to find option "冒険" within #<Capybara::Node::Element tag="select" path="/HTML/BODY[1]/DIV[1]/DIV[1]/DIV[1]/DIV[1]/FORM[1]/DIV[3]/DIV[1]/TABLE[1]/TBODY[1]/TR[1]/TD[2]/SELECT[1]">

모험은 발견되면 엄청 화가났다.
여기서 "역시 value를 지정하지 않으면 할 수 없는 것이 아닌가???"라고 의심하기 시작한다.

select '', from: ''이 아니라도 실현될 수 있는 것 같다


find("option[value='<該当するvalueの値>']").select_option

수정하고 실행해보기
Failure/Error: find("option[value='1']").select_option
     Capybara::Ambiguous:
       Ambiguous match, found 2 elements matching visible css "option[value='1']"

그러나 또 깨끗해졌다.
어쨌든 요소가 2 개 있기 때문에 특정 할 수 있습니다. ! ! ! 짖는다.

이 에러의 원인은 또 다른 select가 존재하고 있기 때문 같다. 실은 장르 이외에 또 하나, 도시를 선택하는 select 태그가 존재하고 있다


어떤 선택 태그인지 지정하십시오.



Rspec 파이센이 어떤 select와 맞서야 하는지 헤매지 않도록 select 태그에 있는 id를 지정해 준다.

tour_spec.rb
find("#tour_genre_id").find("option[value='1']").select_option
find("#tour_city_id").find("option[value='1']").select_option

무사히 쓰러뜨렸습니다. 경험치 5000정도 얻은 걱정

메모 메모



fill_in이나 select는 편리하지만, 아무래도 불안정한 것도 많은 것 같다. . .
이번과 같이 find로 요소를 특정해, 입력하는 쓰는 쪽이 안전하거나, 그렇거나, 라지반다,,,.
다니고 있던 테스트가 때때로 통과하지 않거나 하는 것은 불안정한 것이 원인에 있을까. 몰랐을 때는 항상 엉망이었습니다.

좋은 웹페이지 즐겨찾기