2013-05-21 3 views
0

튜토리얼에서 계속 진행하기 전에 퍼즐의 작은 조각을 알아 내려고 몇 시간을 보냈습니다. 후에. 그렇기 때문에 테스트가 실패한 문제를 한두 다스 정도 알고 있으므로 사과드립니다. "7.1.3 사용자 쇼 페이지 테스트 (공장 포함)"섹션 (아래 제공된 링크)에서 필자는 가입 페이지 테스트를 통과 할 수 없습니다. 이것은 매우 사소한 것처럼 보이지만 문제 (컨트롤러, 경로, 테스트 자체, 사용자 모델 등)가있을 수있는 겉으로보기에 끝이없는 파일에서는 아무 것도 잘못 찾을 수 없습니다. 아무도 온라인으로이 문제를 겪지 않은 것 같아요. 그래서 그것은 무작위적인 설정이나 내 레일 프로젝트의 무언가가되어야한다고 생각합니다.
오류 숭고한에 user_pages_spec 테스트를 실행 한 :Michael Hartl의 Ruby on Rails 튜토리얼 Chapter 7.1.3 - 실패 테스트

Failures: 

    1) User pages signup page 
    Failure/Error: it { should have_content('Sign up') } 
     expected #has_content?("Sign up") to return true, got false 
    # ./spec/requests/user_pages_spec.rb:18:in `block (3 levels) in <top (required)>' 

    2) User pages signup page 
    Failure/Error: it { should have_title(full_title('Sign up')) } 
     expected #has_title?("Ruby on Rails Tutorial Sample App | Sign up") to return true, got false 
    # ./spec/requests/user_pages_spec.rb:19:in `block (3 levels) in <top (required)>' 

Finished in 0.16194 seconds 
4 examples, 2 failures 

Failed examples: 

rspec ./spec/requests/user_pages_spec.rb:18 # User pages signup page 
rspec ./spec/requests/user_pages_spec.rb:19 # User pages signup page 

Randomized with seed 46255 

[Finished in 2.7s with exit code 1] 

사양/요청/user_pages_spec.rb

어쨌든

, 여기에 제가 생각하는 것은 관련 코드입니다

require 'spec_helper' 

describe "User pages" do 

    subject { page } 

    describe "profile page" do 
    let(:user) { FactoryGirl.create(:user) } 
    before { visit user_path(user) } 

    it { should have_content(user.name) } 
    it { should have_title(user.name) } 
    end 

    describe "signup page" do 
    before { visit signup_path } 

    it { should have_content('Sign up') } 
    it { should have_title(full_title('Sign up')) } 
    end 
end 

app/views/users/new.html.erb

<% provide(:title, 'Sign Up') %> 
<h1>Sign Up</h1> 
<p>Find me in app/views/users/new.html.erb</p> 

응용 프로그램/컨트롤러/users_controller.rb

class UsersController < ApplicationController 

    def show 
    @user = User.find(params[:id]) 
    end 

    def new 
    end 
end 

설정/routes.rb

SampleApp::Application.routes.draw do 
    resources :users 
    root to: 'static_pages#home' 
    match '/signup', to: 'users#new',   via: 'get' 
    match '/help', to: 'static_pages#help', via: 'get' 
    match '/about', to: 'static_pages#about', via: 'get' 
    match '/contact', to: 'static_pages#contact', via: 'get' 
end 

는 다른 코드를 생각할 수 알려줘 보아야 할 수도 있습니다. 내가 이라고 생각했기 때문에 new.html.erb를 포함 시켰습니다. 가입 테스트에서 해당 페이지를 찾고 있다고 생각합니다.하지만 틀린 것이 틀림 없습니다. 누구든지 제가이 잘못을 일으키는 잘못을 저에게 알릴 수 있다면, 저는 영원히 감사 할 것입니다.

전체 테스트 중심 개발 개념이 뒷부분에 완전한 고통이 아니라는 사실을 확신 할 수 있다면 그 위에 추가 브라 우니 포인트를 얻을 수 있습니다. 나는이 튜토리얼이 꽤 즐겁다는 것을 알았지 만, 테스트 섹션에 올 때마다, 특히 그것이 효과가 없을 때 나는 계속해서 모든 동기 부여를 잃는다. 장기적으로 코드를 작성하는 것이 더 낫다는 것을 알고 있지만 막 시작하기 만하면 나는 그 코드를 무시할 위험이 있다고 생각하기 시작했습니다.

http://ruby.railstutorial.org/book/ruby-on-rails-tutorial?version=4.0#code-name_title_and_heading

+0

가입 테스트 중 하나를 다음과 같이 바꾸면 어떻게됩니까? 'it "foo"do; save_and_open_page; subject.should have_content ('가입'); end' –

+0

users_controller.rb 파일이 있습니까? 테스트 (올바르게 작성된 경우)는 코드에 문제가 있음을 알려줍니다. 그게 성가신 수 있습니다,하지만 훨씬 덜 성가신 최종 사용자의 이메일보다 똑같은 얘기 ... – PinnyM

+0

@AmitKumarGupta, 그 테스트가 실패합니다. – Aaron14

답변

2

당신은 당신의 사양/요청/user_pages_spec.rb에 '가입'으로 대체 '가입'을 시도 했습니까?

+1

오 ... 나의 .. 선량 ... 나는 너무 어리 석다. 몇 년 동안 프로그래밍을 해왔고 코드를 여러 번 살펴 보았습니다. 어떤 이유로 든 그렇게하려고하지 않았습니다. 테스트 코드는 가이드에있는 것과 동일하므로 오타가있을 수 있습니다. 어쨌든, 당신을 사랑합니다 @FloRahl. 이것은 나에게 소란 때문에 나에게 고뇌의 날을 가져왔다. U – Aaron14

+2

아 아! 나는 여러 번 같은 문제를 만났다! 구문 오류는 내 최고의 능력 :-) 도움이되어 기쁘게 생각합니다. –

관련 문제