RSpec 2 before (: suite) переменная область видимости - PullRequest
8 голосов
/ 15 марта 2011

По сути, я хотел бы создать массив, а затем добавить его во время моих спецификаций, прежде чем окончательно обработать и отобразить его пользователю. Я могу предложить несколько обходных путей, но в идеале я бы хотел сделать следующее.

RSpec.configure do |config|
  config.before(:suite) { @array_of_stuff ||= [] } 
  config.after(:suite) { process_and_print(@array_of_stuff) }
end

def process_and_print(array)
  # do stuff
end

К сожалению, но неудивительно, что @array_of_stuff не находится в области видимости и не может быть добавлен из моих спецификаций, в отличие от установки в блоке before (: all).

Есть ли что-то, что предоставляет RSpec, что сделало бы что-то подобное очень простым?

1 Ответ

10 голосов
/ 15 марта 2011

Возможно, он не предназначен для этого, но вы можете использовать пользовательские настройки :

spec_helper

RSpec.configure do |config|
  config.add_setting :my_array
  config.before(:suite) { RSpec.configuration.my_array = [] }
end

пример спецификации :

it "should do something" do
  RSpec.configuration.my_array << "some value"
  RSpec.configuration.my_array.length.should eql(1)
end
...