在Factory-girl中使用多个序列

时间:2014-12-04 07:12:29

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

我正在对需要用户工厂的功能进行测试。我在使用多个序列定义工厂时遇到问题:

FactoryGirl.define do

  sequence(:username, 1, aliases: [:sender, :receiver]) { |n| "user#{n}"};
  sequence(:email, 1, aliases: [:sender, :receiver]) { |n| "user#{n}@example.com"};

  factory :user do
    username
    email
    password "secret"
    password_confirmation "secret"
    role "1"
  end

end

到目前为止,这正是我想要实现的目标,但它失败并显示此错误消息 - "序列已注册:发件人(FactoryGirl :: DuplicateDefinitionError)" 当我运行时测试。

我尝试了其他几种方法,但似乎无法实现。它只使用一个序列,但当我尝试两个时失败。我理解错误消息,除了我第一次使用工厂女孩,并希望得到一些关于如何实现它的澄清。

1 个答案:

答案 0 :(得分:0)

试试这个

   FactoryGirl.define do
      sequence :email do |n| 
        "email#{n}@factory.com"
      end 

      sequence :username do |n| 
        "testuser#{n}"
      end 

      factory :user do
        username
        email
        password "secret"
        password_confirmation "secret"
        role "1"
      end

    end