我使用如下的序列
sequence (:role_id){|n| "10#{n}" }
现在我用
创建一个工厂 FactoryGirl.create :account, name: "name", phone:"1234", role_id: FactoryGirl.generate(:role_id)
如何测试生成的role_id
值?
expect(account.role_id).to eq ?
答案 0 :(得分:1)
你不应该这样做。序列用于生成唯一的随机数据。
如果您想在模型上建立role
关联,请在工厂中考虑以下内容:
FactoryGirl.define do
factory :person do
role
sequence(:email) { |n| "email-#{n}@example.com" }
phone SecureRandom.uuid
end
end
答案 1 :(得分:1)
我不确定我是否遵循了如何使用测序。
传统方式在您的工厂
FactoryGirl.define do
factory :account do
name { "whatever" }
sequence(:role_id){ |i| "10#{i}"}
phone{ "5555" }
end
end
然后您可以生成如下帐户:
account = FactoryGirl.create :account, name: "name", phone:"1234"
它将使用您提供的内容覆盖每个传递的参数。
您还可以指定:role_id
:
account = FactoryGirl.create :account, name: "name", phone:"1234", :role_id => "1015"
现在,您可以测试任何您想要的值。例如,使用RSpec:
account = FactoryGirl.create :account, name: "name", phone:"1234"
expect(account.role_id).to eq "1001".
但是没有意义,因为你在这里测试的是FactoryGirl。这已经过测试。 :)