Factory_girl 如何使用为 child 声明的特征创建 HABTM 关联?
Factory_girl how to create HABTM association using traits declared for child?
如何使用 factory_girl 使用为 child 声明的特征创建 HABTM 关系?
这基本上就是我想要做的:
factory :site do
name 'some domain name'
trait :rejected do
rejected true
end
trait :processing do
processing true
end
end
factory :user do
trait :bob do
name 'Bob'
after(:create) do |user, evaluator|
create_list(:rejected, 1, users: [user])
create_list(:processing, 1, users: [user])
end
end
end
class User < ActiveRecord::Base
has_and_belongs_to_many :sites
end
我一直在寻找像上面这样的例子,但到目前为止我发现的所有东西都只有 parent 中的特征并且只使用 child 工厂。当我尝试引用 child 特征时,出现 Factory not registered
错误。
此外,该列表不会更改。我不需要它是动态的。我知道我想为每个用户提供哪些网站。
我认为问题在于您没有在创建列表调用中指定您的工厂 (:site
)
尝试:
after(:create) do |user, evaluator|
create_list(:site, :rejected, 1, users: [user])
create_list(:site, :processing, 1, users: [user])
end
或者只是:
after(:create) do |user, evaluator|
user.sites << build(:site, :rejected)
user.sites << build(:site, :processing)
end
如何使用 factory_girl 使用为 child 声明的特征创建 HABTM 关系?
这基本上就是我想要做的:
factory :site do
name 'some domain name'
trait :rejected do
rejected true
end
trait :processing do
processing true
end
end
factory :user do
trait :bob do
name 'Bob'
after(:create) do |user, evaluator|
create_list(:rejected, 1, users: [user])
create_list(:processing, 1, users: [user])
end
end
end
class User < ActiveRecord::Base
has_and_belongs_to_many :sites
end
我一直在寻找像上面这样的例子,但到目前为止我发现的所有东西都只有 parent 中的特征并且只使用 child 工厂。当我尝试引用 child 特征时,出现 Factory not registered
错误。
此外,该列表不会更改。我不需要它是动态的。我知道我想为每个用户提供哪些网站。
我认为问题在于您没有在创建列表调用中指定您的工厂 (:site
)
尝试:
after(:create) do |user, evaluator|
create_list(:site, :rejected, 1, users: [user])
create_list(:site, :processing, 1, users: [user])
end
或者只是:
after(:create) do |user, evaluator|
user.sites << build(:site, :rejected)
user.sites << build(:site, :processing)
end