2011-03-19 4 views
7

연습 문제는 5 장 끝에 있습니다. 링크가 올바른 페이지로 이동하는지 테스트해야합니다. 여기에 내 테스트 코드가있다.내 rspec 테스트가 통과하지 못합니다. Michael Hartl 's rails tutorial

require 'spec_helper' 

describe "LayoutLinks" do 

    it "should have the right links on the layout" do 
     visit root_path 
     click_link "About" 
     response.should have_selector('title', :content => "About") 
     click_link "Home" 
     response.should have_selector('title', :content => "Home") 
     click_link "Help" 
     response.should have_selector('title', :content => "Help") 
     click_link "Contact" 
     response.should have_selector('title', :content => "Contact") 
     click_link "Sign up now!" 
     response.should have_selector('title', :content => "Sign up") 
     end 
     end 

마지막 테스트를 제외한 모든 항목이 통과합니다. 그것은 "지금 가입하십시오!"텍스트와 링크를 찾을 수 없다고 말합니다. . 페이지에 "지금 가입하십시오!"라는 메시지가 표시됩니다. 링크. 소스 코드에서 다르게 렌더링했을 수도 있지만 원본 코드를 보면 정상적으로 보입니다 <a href="/signup" class="signup_button round">Sign up now!</a>. 내 이해에서 링크를 클릭 한 다음 제목이 : content 기호와 일치하는지 테스트해야합니다. 내가 뭔가를 오해하고 있니? 여기

내가 점점 오전 오류입니다 : "지금 가입"나는 문제가이 있다는 것입니다 생각

Failures: 

    1) LayoutLinks should have the right links on the layout 
    Failure/Error: click_link "Sign up now!" 
    Webrat::NotFoundError: 
     Could not find link with text or title or id "Sign up now!" 
+1

콘텐츠 설정 => "지금 가입하십시오!" 실험하기 만하면되지만, 문제는 응답이 아닌 root_path에서 링크를 찾는 것 같습니다. –

+0

장탄구가 있지만 느낌표를 제거하면 작동합니다. 'click_link 지금 가입하기 '' – lebreeze

+0

방금 ​​시도했습니다. 그것은 나에게 같은 오류를 준다. 나도 데려가려고! 링크에서 –

답변

9

링크는 실제로 모든 페이지에 있지 않으며이 테스트는 실제로 페이지를 탐색합니다.

적어도이 튜토리얼의 버전에서 나는 얼마 전에 홈 페이지에서만 링크를 사용했다.

click_link 바로 전에 visit root_path을 추가하면 제대로 작동 할 것입니다.

더 나은 테스트는 해당 홈 페이지와 관련된 독립적 인 테스트를 확인하는 것입니다.

+0

굉장해! 나는 앞서 가서 독립적 인 시험을했다. 나는 그것이 모든 페이지를 테스트하고 있다는 것을 깨닫지 못했습니다. 나는 root_path를 방문하기 때문에 홈 페이지에서만 링크를 테스트하고 있다고 생각했습니다. –

+1

나는 여기도 끊어 버렸고 당신은 대답을 주었다. @DonRoby. 감사! – BenU

0

또한 제목 텍스트는 "Sign Up"입니다. 캐피탈 'U'. 페이지가이 하나가 작동하지 않습니다 테스트가 있기 때문이다 "Home"

+0

Marc의 설명을 분명히하기 위해 click_link 함수가 실제로 해당 페이지로 이동합니다. * Rspec은 * 모든 페이지를 테스트하는 것이 아니라 그 순간에 방문하는 모든 페이지를 테스트하는 것입니다. Marc이 지적한 것처럼 "홈"인 경우 "지금 가입하십시오!" 링크를 사용할 수 있습니다. – invaliduser

0

이유 직전 방문한 경우 visit root_path을 할

response.should have_selector('title', :content => "Sign Up") 

선행 대답의 조언이 필요없는 것입니다 :

선은 할 필요가 실행해야합니다 :

$ rake db:test:prepare 

적어도 내 테스트가 통과되지 않은 이유입니다.

솔루션을 찾았습니다. in this forum

관련 문제