#ruby-on-rails #testing #cucumber
#ruby-on-rails #тестирование #cucumber
Вопрос:
У меня есть приложение, в котором есть пользователи. При создании пользователей также создается связанная модель учетной записи, которая создает основу для множества путей в приложении.
Например: /accounts/:account_id/средства
Мы используем uuid учетных записей в качестве:account_id в пути (через to_param)
В моих тестах cucumber я хочу перейти по указанному выше URL, но мне нужно знать uuid учетной записи для соответствующего пользователя.
Поэтому, как я могу построить путь, который будет работать с данными, которые у меня в настоящее время есть в моей базе данных?
Ответ №1:
Итак, лучший способ сделать это — создать все необходимые данные в начале теста. В моем собственном проекте я избегаю заполнения базы данных, внешней по отношению к моим сценариям.
Вы можете легко сделать это с помощью конструкции «Given». В качестве примера:
Given the following URLs:
| url | name | etc...
| www.foo.com | Foo | ...
Вы получите содержимое этих строк, разделенных каналами, в виде списка хэшей с заголовком в качестве ключа в каждой строке к соответствующему значению. На шаге, который вам нужно будет написать, вы можете увеличить хэши и создать требуемые данные, как описано.
Given /^the following URLs?:$/ do |urls|
urls.hashes.each do | url_hash |
url= URL.new
url.url = url_hash[:url]
url.title = url_hash[:name]
...
url.save!
end
end
В моих тестах у меня есть ряд объектов, которые все должны быть правильно настроены по отношению друг к другу. Итак, у меня есть ряд связанных «заданных» шагов, которые помогают мне создавать данные.
Я надеюсь, что это ответ на ваш вопрос
Комментарии:
1. Но как вы справляетесь с идентификаторами, чтобы иметь возможность соотносить разные модели друг с другом?