2012-06-19 5 views
0

Michael Hartl 's Rails 튜토리얼의 7.2.2 절 (7 장)에 있는데, @user 변수를 app/controllers/users_controller.rb에 추가하면 이상해진다. 지금 통과 해야하는 시험은하지 않습니다 - 그들은 대신 다른 이유로 실패 :Rails 튜토리얼 7.2.2 UsersController issue

$ rspec spec/requests/user_pages_spec.rb -e "signup page" 

Failures: 

1) User pages signup page 
Failure/Error: before { visit signup_path } 
ActionView::Template::Error: 
    undefined method `users_path' for #<#<Class:0x007fdec372a8e0>:0x007fdec375d010> 
# ./app/views/users/new.html.erb:6:in `_app_views_users_new_html_erb___2884421820517152565_70297369620580' 
# ./spec/requests/user_pages_spec.rb:8:in `block (3 levels) in <top (required)>' 

2) User pages signup page 
Failure/Error: before { visit signup_path } 
ActionView::Template::Error: 
    undefined method `users_path' for #<#<Class:0x007fdec372a8e0>:0x007fdec45caee0> 
# ./app/views/users/new.html.erb:6:in `_app_views_users_new_html_erb___2884421820517152565_70297369620580' 
# ./spec/requests/user_pages_spec.rb:8:in `block (3 levels) in <top (required)>' 

처음에,이 테스트는 ㄱ 실패/C의 @user이 전무하다. 이제 그들은 정의되지 않은 방법으로 인해 실패하고 있습니다.

이 책은 일단 @user를 정의하면 통과해야한다고 제안하므로 혼란 스럽습니다. 아마도 약간의 가능성이 있다고 생각 했었지만, 아직 해결되지 않았기 때문에 진행하기 전에 이것을 알아 내고 싶습니다. 여기

는 질문에 (책에서 복사) 시험은 다음과 같습니다

require 'spec_helper' 

describe "User pages" do 
    subject { page } 

    describe "signup page" do 
    let(:user) { FactoryGirl.create(:user) } 
    before { visit signup_path } 
    it { should have_selector('h1', text: 'Sign up') } 
    it { should have_selector('title', text: full_title('Sign up')) } 
    end 
end 

답변

1

다시 열고 나는 config/environments/test.rb이 오타 발견하는 나를 이끌었다 다른 오류가있어 처음부터 프로젝트를 :

# Speed up tests by lowering BCrypt's cost function. require 'bcrypt' 
silence_warnings do 
    BCrypt::Engine::DEFAULT_COST = BCrypt::Engine::MIN_COST 
end 

require 'bcrypt'을 자신의 행으로 이동하면 원래 질문의 테스트를 포함하여 모든 것이 다시 작동합니다.

# Speed up tests by lowering BCrypt's cost function. 
require 'bcrypt' 
silence_warnings do 
    BCrypt::Engine::DEFAULT_COST = BCrypt::Engine::MIN_COST 
end 
관련 문제