黄瓜与表定义和测试/种子数据

时间:2011-11-13 01:54:19

标签: ruby-on-rails cucumber

我有这样的场景:

Scenario:  Display some articles
  Given the following article pages:
    | title | body        |
    | test  | hello world |

我见过有些人创建xxx_steps.rb,然后动态生成数据。

当黄瓜运行时,它是否默认运行RAILS_ENV = test?是否会使用新的测试数据库为每次运行加载seeds.rb?如果没有,我怎么能这样做呢?

此外,黄瓜是否加载了/ step_definitions中的所有文件,或者是否存在某种约定,它会加载与当前要素文件匹配的所有文件?

1 个答案:

答案 0 :(得分:1)

要动态生成数据,我建议您使用factory_girl gem。 您可以在控制其他人的同时自动生成字段。

在这种情况下,我有两个名称数组(first_names和last_names),我会随机创建Contact对象。

FactoryGirl.define do

  factory :contact do
    name {"#{first_names.sample} #{last_names.sample}"}
    email  {"#{name.downcase.gsub!(' ', '.')}@example.com"}
    vat_number {rand(9999999).to_s.center(7, rand(9).to_s)}
    gender {['male', 'female'].sample}
    birth_date {Date.today - rand(200..40000)}
  end
end

然后创建一个联系人我只需要FactoryGirl.create(:contact)来获取单个记录。 您可以根据自己的需要调整此示例。

在您的情况下,您可以像这样使用您的表:

Given /^the following article pages:$/ do |table|
   table.hashes.each do |hash|
   FactoryGirl.create(:article, hash
end