#ruby-on-rails #cucumber
#ruby-on-rails #cucumber
Вопрос:
Я пытаюсь настроить фон для функции cucumber. В идеале я хочу иметь возможность делать:
Given the following folders exist:
| id | parent_id | name |
| 1 | nil | folder1 |
| 2 | nil | folder2 |
| 3 | 2 | folder3 |
| 4 | 1 | folder4 |
| 5 | 1 | folder5 |
| 6 | 5 | folder6 |
Однако я не могу этого сделать, поскольку я не могу установить ИДЕНТИФИКАТОР конкретной модели, и поэтому первая строка может быть создана с идентификатором 7, и поэтому ни одна из других «дочерних» строк не может получить к ней доступ. Имя не уникально, поэтому я не могу указать find_by_name в определении шага. У меня такое чувство, что это будет какое-то уродливое решение с вложенным массивом.
Есть идеи, как этого добиться?
Ответ №1:
Я не понимаю, почему вы не можете выбрать уникальные имена для целей настройки теста?
Комментарии:
1. Этого недостаточно, поскольку мне нужно иметь возможность обрабатывать (и тестировать) повторяющиеся имена.
Ответ №2:
То, как я закончил это делать в своих определениях шагов:
Given /^the following folders exist:$/ do |table|
table.hashes.each{|f|
folder = Folder.new(f)
folder.save
ActiveRecord::Base.connection.execute('UPDATE folders SET id = ' f['id'].to_s ' WHERE id = ' folder.id.to_s)
}
end