2011-05-01 2 views
2

RoR 앱에서 RSpec 테스트를 강화하고 있습니다. 페이지의 각 링크를 클릭하면 올바르게 처리되는지, 즉 컨트롤러에 대한 인식 경로를 생성하고 컨트롤러에 서비스를 제공 할 수있는 방법이 있는지 확인하는 간단한 방법이 필요합니다.RoR, RSpec : 페이지의 각 링크를 서비스 할 수 있는지 확인하려고합니다.

각 페이지마다 특정 테스트를 작성할 수 있지만 RSpec 도우미 기능을 사용하여 페이지의 모든 링크를 자동으로 찾아서 각각을 확인하는 것이 바람직합니다. FWIW, 모든 링크가 내 도메인에 있다고 가정하는 것이 안전합니다 (외부 사이트에 대한 링크가 없음).

내가 시도한 모든 것을 열거함으로써이 질문을 부 풀리지 않고, 나는 단지 묻는다. 어떻게 할 것인가? 공통적이고 유용한 기능처럼 보입니다.

  • FF

답변

1

내가 카피 바라의 확률값을 사용하는 거라고 ...

1. make list of pages 
2. For each page 
3.  Visit page 
4.  get all links using xpath (included in capybaara) 
5.  For each link 
6.   do a Rspec test get url; response.should be_ok 
+0

이미 노코 기리가 - 정말 카피 바라 단지 페이지의 링크를 얻기 위해 필요합니까? –

+0

아니, 아니 아마도 .. 나는 cappecor가 RSpec에 이미 통합되어 있기 때문에 capybara를 말하고 아마 WTF 요소를 낮출 것입니다. 즉 Capybara는 Nokogiri를 내부적으로 사용하지만 Nokogiri와의 직접 연결을 Rspec과 직접 통합하는 방법은 내 머리 꼭대기에서 알 수 없습니다. 그것은 투명 할 수도 있습니다, 나는 그것을 결코 시도하지 않았습니다 ... 그래서 나는 말할 수 없습니다 – noli

+0

제 원래 대답을 추가하겠습니다. 어쩌면 당신은 앱의 모든 페이지 목록을 만들기 위해 사이트 맵 젬을 사용할 수 있습니다. 1 단계로 가기가 더 쉽습니다. – noli

0

이런 종류의 당신이 RSpec에 나 오이에 하나 쓸 수있는 통합 테스트에 속한다. 링크 자체 테스트는 제한된 가치를 지닙니다. 링크가 깨 졌는지 여부를 알려주지 만 링크가 잘못된 위치를 가리키는 지 여부는 알려주지 않습니다. 오이에서

, 당신은 뭔가를 작성할 수

Given I am on the home page 
When I follow "Buy Stuff" 
Then I should be on the shopping page 
+0

이 통합 테스트에 동의했습니다. 그러한 제한된 가치에 동의하지 않는다 : 그것은 누락 된 경로, 누락 된 정적 페이지 등을 즉시 하이라이트 할 것이다. 나의 질문의 핵심은 페이지의 모든 링크를 자동으로 얻고, 각각을 클릭하고 오류. –