我一直试图让这个工作看official documentation,this blog post,并在这里看了一些例子。无论我尝试什么,我都会遇到错误。
我正在寻找一个工作示例来了解测试的结构;我正在使用Factory Girl 4.4.1和Rspec 3。
我设法创建一个有效对象的唯一方法是这样做,但它不是构建我的对象的正确方法,因为我想先在动物模型上运行验证,然后再运行animal_image。 / p>
FactoryGirl.define do
factory :animal_image do
animal_id 1
image { File.open("#{Rails.root}/spec/fixtures/yp2.jpg") }
end
end
file = FactoryGirl.create(:animal_image)
#<AnimalImage id: 101, animal_id: 1, image: "yp2.jpg", created_at: "2014-10-14 10:08:55", updated_at: "2014-10-14 10:08:55">
我的模特
class Animal < ActiveRecord::Base
has_many :animal_images, dependent: :destroy
end
class AnimalImage < ActiveRecord::Base
belongs_to :animal
end
答案 0 :(得分:1)
试试这个:
FactoryGirl.define do
factory :animal do
ignore do
images_count 5
end
after(:create) do |animal, evaluator|
create_list(:animal_image, evaluator.images_count, animal: animal)
end
end
end
FactoryGirl.define do
factory :animal_image do
image { File.open("#{Rails.root}/spec/fixtures/yp2.jpg") }
end
end
a = FactoryGirl.create(:animal)
a.animal_images.count
=> 5
a = FactoryGirl.create(:animal, images_count: 1)
a.animal_images.count
=> 1
更多信息here