2015-01-26 5 views
2

Michael Hartl의 Ruby on Rails 튜토리얼 9 장에서 RSpec 테스트에 문제가 있습니다. utopt.rb 파일에 정의 된 sign_in 메소드가 표시되지 않기 때문입니다. 나는 붙어있어, 나는 모든 것을 점검했고 그것은 옳은 것처럼 보인다. 비슷한 줄에 ApplicationHelper가 포함되어있는 부분을 보았습니다.하지만 이미 가지고 있으며, 같은 파일에 묶인 "full_title"메서드에 문제가 없습니다. MethodError : RSpec에 대한 정의되지 않은 메소드`sign_in '

utilities.rb: 

def full_title(page_title) 
    base_title = "Ruby on Rails Tutorial Sample App" 
    if page_title.empty? 
    base_title 
    else 
    "#{base_title} | #{page_title}" 
    end 
end 

def sign_in(user, options={}) 
    if options[:no_capybara] 
    #Sign in when not using Capybara 
    remember_token = User.new_remember_token 
    cookies[:remember_token] = remember_token 
    user.update_attribute(:remember_token, User.encrypt(remember_token)) 
    else 
     visit signin_path 
     fill_in "Email", with: user.email 
     fill_in "Password", with: user.password 
     click_button "Sign in" 
    end 
end 

실패한 파일 user_pages_spec.rb :

그 방법을 포함하여 힘든 시간을 보내고있는 경우
require 'rails_helper' 
include ApplicationHelper 
... 
... 
... 
describe "edit" do 
let(:user) { FactoryGirl.create(:user) } 
before do 
    sign_in user 
    visit edit_user_path(user) 
end 

describe "page" do 
    it { should have_content("Update your profile") } 
    it { should have_title("Edit user") } 
    it { should have_link('change', href: 'http://gravatar.com/emails') } 
end 
... 
end 

답변

3

, 당신이 당신의 사양에 직접 포함하여 시도 할 수 있습니다. 그 작동하는 경우

require 'rails_helper' 
... 
describe "page" do 
    it { should have_content("Update your profile") } 
    it { should have_title("Edit user") } 
    it { should have_link('change', href: 'http://gravatar.com/emails') } 
end 
.... 


private 

def sign_in(user, options={}) 
    if options[:no_capybara] 
    #Sign in when not using Capybara 
    remember_token = User.new_remember_token 
    cookies[:remember_token] = remember_token 
    user.update_attribute(:remember_token, User.encrypt(remember_token)) 
    else 
     visit signin_path 
     fill_in "Email", with: user.email 
     fill_in "Password", with: user.password 
     click_button "Sign in" 
    end 

, 가서 당신의 사양에 대한 도우미 방법과 새 모듈을, 다음 spec_helper/rails_helper에

+0

감사합니다 것을 포함! 그것은 작동 했으므로 파일 support/utilities.rb에 다시 넣고 rails_helper.rb에이 파일에 대한 경로를 추가했습니다 : require 'support/utilities' 이제 모든 테스트는 녹색입니다! =) –