有没有办法干掉这个FactoryGirl的例子?

时间:2014-01-04 20:04:38

标签: ruby-on-rails ruby rspec factory-bot

我有以下工厂:

FactoryGirl.define do
  factory :user do
    name 'Name'
    password 'password'
    email 'email@example.com'
  end
end

我在before块中有以下代码(我正在创建email - some_boolean_flag对的所有可能变体,其中电子邮件可以采用'',默认值和some_boolean_flag可以是假的/无或真的):

FactoryGirl.create(:user, email: '', some_boolean_flag: false)
FactoryGirl.create(:user, email: '', some_boolean_flag: true)
FactoryGirl.create(:user, some_boolean_flag: nil)
FactoryGirl.create(:user, some_boolean_flag: true)

我该怎么干? FactoryGirl中是否有任何方法可以创建对象列表,但具有不同的特定属性并且不重复相同的行?谢谢!

1 个答案:

答案 0 :(得分:3)

厂:

FactoryGirl.define do
  factory :user do
    name 'Name'
    password 'password'
    email 'email@example.com'

    factory :boolean_user
      some_boolean_flag true
    end
  end
end

测试

['', 'email@example.com'].each do |email|
  FactoryGirl.create(:user, email: email)
  FactoryGirl.create(:boolean_user, email: email)
end

这里有一个注释,我故意重新发布'email@example.com',因为我喜欢我的工厂是通过验证所需要的。我不喜欢依赖工厂的内容来通过测试。我将始终专门调用我需要的数据。