Как я могу протестировать с помощью Cucumber, когда мне требуются соответствующие данные?

#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. Но как вы справляетесь с идентификаторами, чтобы иметь возможность соотносить разные модели друг с другом?