Joa*_*urg 23 ruby ruby-on-rails factory-bot
默认情况下,FactoryGirl调用关联的工厂来创建它们.我可以将工厂的关联作为参数传递.但是我怎样才能传递一个应该在关联链中使用的对象呢?
例如:
我有一个Post,它有一个PostsManager,它有一个Account,属于current_user.
当我这样做时,Factory(:post)它会创建一个PostsManager,它创建一个不属于(存根)current_user的帐户.
因此,在使用Post工厂的规范中,我必须这样做:
account = Factory(:account, user: current_user)
post_manager = Factory(:post_manager, account: account)
post = Factory(:post, post_manager: post_manager)
Run Code Online (Sandbox Code Playgroud)
我想做的是打电话给工厂Factory(:post, user: current_user),然后current_user一直通过协会到帐户工厂.有没有办法这样做?
Jac*_*own 23
不确定您使用的是什么版本的FactoryGirl,但如果您使用的是最新版本(2.6+),则可以使用瞬态属性(在"使用入门"页面上阅读更多内容).你可以这样做:
FactoryGirl.define do
factory :post do
ignore do
user nil
end
posts_manager { FactoryGirl.build(:posts_manager, :user => user) }
end
factory :posts_manager do
ignore do
user nil
end
account { FactoryGirl.build(:account, :user => user) }
end
factory :account do
user { user }
end
end
FactoryGirl.create(:post, :user => current_user)
Run Code Online (Sandbox Code Playgroud)