2012-08-24 4 views
0

: 나는 그것을 실행하면정의되지 않은 내가 RSpec에있는 다음과 같은 테스트 블록 한 지역 변수 또는 메소드`사용자

describe "for signed-in users" do 
     let(:user) { FactoryGirl.create(:user) } 
     before do 
     FactoryGirl.create(:micropost, user: user, content: "Lorem ipsum") 
     FactoryGirl.create(:micropost, user: user, content: "Dolor sit amet") 
     sign_in user 
     visit root_path 
     end 

     describe "sidebar" do 
     it { should have_selector('div.pagination')} 
     it "should render the user's feed" do 
      user.feed.each do |item| 
      page.should have_selector("li##{item.id}", text: item.content) 
      end 
     end 

     describe "micropost delete links" do 
      let(:other_user) { FactoryGirl.create(:user, email: "[email protected]") } 
      let!(:m3) { FactoryGirl.create(:micropost, user: other_user, content: "Other MP") } 

      user.feed.each do |item| 
      find("li##{item.id}").should have_link('delete') 
      end 
     end 

     it "should show the correct number of microposts" do 
      page.should have_selector('span', text: '2 microposts') 
      user.microposts.first.destroy 
      visit root_path 
      page.should have_selector('span', text: '1 micropost') 
      user.microposts.first.destroy 
      visit root_path 
      page.should have_selector('span', text: '0 microposts') 
     end 
     end 
    end 

내가이 오류 :이 만 발생

/Users/8vius/Projects/RubyDev/sample_app/spec/requests/static_pages_spec.rb:49:in `block (5 levels) in <top (required)>': undefined local variable or method `user' for #<Class:0x007fd45c8c39c0> (NameError) 

내가 추가 한 후 "은 마이크로 포스트 삭제 링크"블록을 설명합니다. 어떤 문제입니까?

답변

2

it 블록 외부에서 테스트를 실행하는 설명 블록이 있습니다. 이 때문에 user은 정의되지 않았습니다.

너의 :

describe "micropost delete links" do 
    let(:other_user) { FactoryGirl.create(:user, email: "[email protected]") } 
    let!(:m3) { FactoryGirl.create(:micropost, user: other_user, content: "Other MP") } 

    user.feed.each do |item| 
    find("li##{item.id}").should have_link('delete') 
    end 
end 

대 :

describe "micropost delete links" do 
    let(:other_user) { FactoryGirl.create(:user, email: "[email protected]") } 
    let!(:m3) { FactoryGirl.create(:micropost, user: other_user, content: "Other MP") } 

    it "should have delete link" do 
    user.feed.each do |item| 
     find("li##{item.id}").should have_link('delete') 
    end 
    end 
end 
가 그런 일을 몰랐
+0

, RSpec에를 사용하는 멍청한 놈, 감사합니다 – 8vius

관련 문제