Как использовать переменную в контексте rspec - PullRequest
0 голосов
/ 29 сентября 2011

В приведенном ниже коде каждый вызов subscriber_with_99_users создает нового подписчика с 99 пользователями, что мне не нужно. Как я могу это исправить, чтобы создать абонента только один раз и возвращать его во всех последующих вызовах, или есть лучший способ сделать это.

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                                                     

1 Ответ

1 голос
/ 29 сентября 2011

Если вы пытаетесь что-то делать в разных контекстах, вам, вероятно, захочется отключить фиксации транзакций.Это легко сделать

ActiveSupport::TestCase.use_transactional_fixtures = false

Хотя, вероятно, было бы лучше, если бы вы могли стратегически настроить свои переменные в блоке До:

https://www.relishapp.com/rspec/rspec-core/v/2-13/docs/hooks/before-and-after-hooks!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...