Testing RSpec和FactoryGirl-构建独特的关联?

Testing RSpec和FactoryGirl-构建独特的关联?,testing,ruby-on-rails-4,factory-bot,rspec-rails,Testing,Ruby On Rails 4,Factory Bot,Rspec Rails,反馈模型需要存在一个帐户。每个帐户都有一个唯一的:uuid,在模型中验证:验证:uuid,存在:true,唯一性:true 我使用rspec测试反馈模型,每次我构建一个反馈对象时,都会不断得到Uuid已经被采纳错误,因为反馈正在构建一个关联的帐户 规格/型号/反馈\u规格rb 规范/工厂/反馈.rb spec/factories/accounts.rb 从accounts.rb工厂可以看到,当我在反馈规范.rb文件中创建帐户时,uuid SecureRandom.uuid行似乎总是返回相同的uu

反馈
模型需要存在一个
帐户
。每个
帐户
都有一个唯一的:uuid,在模型中验证:
验证:uuid,存在:true,唯一性:true

我使用rspec测试反馈模型,每次我构建一个
反馈对象时,都会不断得到
Uuid已经被采纳
错误,因为反馈正在构建一个关联的
帐户

规格/型号/反馈\u规格rb 规范/工厂/反馈.rb spec/factories/accounts.rb 从accounts.rb工厂可以看到,当我在
反馈规范.rb
文件中创建
帐户时,
uuid SecureRandom.uuid
行似乎总是返回相同的uuid

我想知道,FactoryGirl是否只构建一次account对象,然后在每个单独的测试中重复使用它?我希望每个帐户对象都有一个唯一的UUID,但这显然不起作用。然而,当我切换到使用
序列(:uuid){| n | n}
行时,它工作得很好

试图了解FactoryGirl是如何创建这些测试对象的。显然不是我想的那样。我的测试现在运行正常,但我不明白的事情最终会困扰我。

试试这个:

FactoryGirl.define do
  factory :account do
    uuid { SecureRandom.uuid }
    active true
  end
end
每当调用帐户工厂时,这将对SecureRandom.uuid进行计算,而不是在FactoryGirl定义其工厂时进行计算

编辑:


有关更多信息,请参阅。

我重新阅读了RSpec的一章后才发现。那些小卷发背带很狡猾!正如您所说,这确实解决了问题。再次被Rspec和延迟加载所困扰!
FactoryGirl.define do
  factory :feedback do
    association :account
    message Faker::Lorem.paragraphs
  end
end
FactoryGirl.define do
  factory :account do
    # uuid SecureRandom.uuid # THIS LINE WILL NOT WORK
    sequence(:uuid) { |n| n } # THIS LINE WORKS
    active true
  end
end
FactoryGirl.define do
  factory :account do
    uuid { SecureRandom.uuid }
    active true
  end
end