2013-06-05 5 views
0

나는 틀릴 수도있는 rspec 테스트를 가지고 있지 않습니다. 이 방법은 명확하게 정의되어 있으며 사이트 자체에서 작동합니다. 시험에 실패하는 것입니다. 뷰 자체 내에서정의 된 메소드`gravatar_for '가 수정 등록 경로에 포함됨

module UsersHelper 
#Returns the Gravatar for the given user. 
def gravatar_for(user, options = { size: 50}) 
    gravatar_id = Digest::MD5::hexdigest(user.email.downcase) 
    size = options[:size] 
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}" 
    image_tag(gravatar_url, alt: user.name, class: "gravatar") 
end 
    end 

그리고 마지막으로 코드 : 여기

describe "edit" do 
    let(:user) {FactoryGirl.create(:user)} 
    before do 
     sign_in user 
     visit edit_user_registration_path(user) 
    end 

    describe "page" do 


     it { should have_selector('h1', text: "Update your profile")} 
     it { should have_selector('title', text: "Edit user")} 
     it { should have_link('change', href: "http://gravatar.com/emails")} 
    end 

    describe "with invalid information" do 
     before { click_button "Save changes"} 
     it { should have_content('error')} 

실제 방법 : 여기
UserPages edit with invalid information 
Failure/Error: visit edit_user_registration_path(user) 
ActionView::Template::Error: 
    undefined method `gravatar_for' for_app_views_devise_registrations_edit_html_erb 
# ./app/views/devise/registrations/edit.html.erb:8:in 
`_app_views_devise_registrations_edit_html_erb 
# ./spec/requests/user_pages_spec.rb:114:in `block (3 levels) in <top (required)>' 

은 RSpec에 테스트입니다

<%= gravatar_for @user %> 
    <a href="http://gravatar.com/emails" target="_blank">change avatar</a> 

답변

0

귀하 방법은에 정의되어있다.,보기는 Devise::Registration입니다. 따라서 적절한 도우미, 응용 프로그램 도우미로 이동하거나 UserDevise::Registration 메서드를 공유하는 클래스를 만들어 두 도우미에 모두 포함시켜야합니다.

+1

감사합니다. –