2011-09-29 49 views
0

在下面的代碼中,對subscriber_with_99_users的每次調用都會創建一個擁有99個用戶的新訂戶,這是我不想要的。我怎樣才能解決這個問題,只創建一次用戶,然後在所有後續的調用中返回它,或者有更好的方法來做到這一點。如何在rspec中的上下文中使用變量

describe "#as_json" do 

context "in 'users' path for a subscriber with 99 users" do 

    let(:presenter_options) { { path: 'users', page: 1, per_page: 10 } } 

    let(:subscriber_with_99_users) { 
    if (@subs_with_99_users) 
     @subs_with_99_users 
    else 
     @subs_with_99_users = get_subscriber_with_many_users 99 
    end 
    } 

    subject { subscriber_presenter.as_json.fetch('users').length } 

    context "and pagination with page size of 10" do 

    {1 => 10, 10 => 9, 11 => 0, 100 => 0}.each do |page, count| 
     context "for page #{page}" do 
     let(:subscriber_presenter) { 
      Fabricate(:subscriber_presenter, subscriber: subscriber_with_99_users, options: presenter_options.merge(page: page)) 
     } 
     it "returns #{count} users" do 
      should == count 
     end 
     end 
    end 

    end 

end 

end              

回答

相關問題