Я хотел бы генерировать серию спецификаций динамически на основе внешнего источника данных. В частности, у меня есть электронная таблица Google, которая загружается, и каждая строка в электронной таблице должна использоваться для собственного тестового примера:
describe "Cases" do
before(:all) do
# Download spreadsheet and
# populate cases in DB
end
Cases.each do |case|
it "Case #{case.num}" do
# spec
end
end
end
Это не работает, потому что для начинающих с RSpec нет (как я понимаю) "видеть" любые спецификации во время компиляции, поэтому before(:all)
никогда не выполняется. Если бы я поместил пустой блок it
, он бы выполнил before(:all)
, но затем я столкнулся с проблемой, которую Cases.each
оценивает раньше всего, что пусто, потому что оно не было еще не заполнен блоком before(:all)
.
Короче говоря, я в замешательстве, и мое понимание RSpec кажется очень ограниченным. Я хотел бы получить данные, использовать эти данные, чтобы настроить набор спецификаций, а затем запустить их с помощью RSpec. Это могло бы (возможно?) Работать, если Cases были массивом, настроенным заранее (за пределами блока описания), но мне нужно, чтобы он был настроен во время выполнения. Это то, что я хочу сделать в RSpec?