Это обычный анти-шаблон Cucumber, позволяющий вводить данные в файлы объектов. Это трудно сделать частично, потому что это противоречит принципу написания хороших файлов функций.
Способ, которым Cucumber хочет, чтобы вы работали, состоит в том, чтобы выдвигать детали и абстрагировать процесс, чтобы функция не занималась программированием (зацикливанием, повторением шагов и т. Д.). Здесь вы можете улучшить свою практику, подумав о том, что находится в файле json и почему вы хотите повторить его.
Ваш файл json, кажется, хочет перебрать несколько кафе, чтобы посмотреть, смогут ли они приготовить кофе. Таким образом, ваша функция может дать название группе кофеен, а затем поговорить о том, может ли группа магазинов что-то сделать. Возможно что-то вроде
Scenario: Seattle coffee shops can make an iced mocha
Given our coffee shops are located in Seattle
Then our coffee shops can make an iced mocha
и реализовать сценарии
Given 'our coffee shops are located in Seattle' do
@coffee_shops = get_seattle_coffee_shops
end
Then 'our coffee shops can make an iced mocha' do
@coffee_shops.each do | shop |
assert can_make_recipe(
shop: shop,
recipe: Recipes::IcedMocha
)
end
end
Выше приведено очень грубое начало, и я бы извлек больше кода из определений шагов в вспомогательные методы. Ключевая часть, которую я пытаюсь проиллюстрировать, заключается в том, что сценарий и этапы известны при работе с группой кофеен, а не с одной кофейней
В вашем сценарии вспомогательный метод get_seattle_coffee_shops
будет загружать и обрабатывать ваш json для получения ваших данных. Поскольку эта обработка была перенесена из файла функций (без кода) в код, эту операцию теперь намного проще реализовать. Это «Отталкивание» - очень важная техника при Cuking, и именно так вы должны подходить к любой проблеме, которая включает programming
файлы объектов.