如何使用FactoryGirl创建夹具ActsAsTaggableOn?
问题描述:
我如何创建一个灯具ActsAsTaggableOn::tag使用FactoryGirl?如何使用FactoryGirl创建夹具ActsAsTaggableOn?
我想:
/spec/factories/tags.rb
Factory.define ActsAsTaggableOn::Tag do |f|
f.sequence(:name) { |n| "titre#{n}" }
end
/spec/controllers/books_controller.rb
it "should return 2 categories whith books" do
fake_tag = Factory(:tag)
...
end
我得到:
Failure/Error: fake_tag = Factory(:tag)
ArgumentError:
Factory not registered: tag
感谢您的帮助, 文森特
答
我想你使用的是一个相当老的工厂女孩版本。我鼓励你如果能够切换到最新版本。
回答你的问题,我想你需要的东西,如:
Factory.define :tag, :class => ActsAsTaggableOn::Tag do |f|
f.sequence(:name) { |n| "titre#{n}" }
end
检查工厂1.3 DOC here。但正如我之前告诉过你的。尝试切换到更新的版本。
答
这是我如何添加标签(使用acts-as-taggable-on
)到我的用户模型(使用factory_girl):
FactoryGirl.define do
factory :post do
...
trait :poetry do
after(:create) { |post| post.update_attributes(tag_list: 'poetry') }
end
end
end
这样,当我想创建只是一个普通的Post
对象,我写:
post = create(:post)
但是当我想创建一个Post
标记poetry
,我写的:
post = create(:post, :poetry)
它工作得很好。
如果您在记录中验证了tag_list,则不会 – AndreiMotinga 2016-04-01 17:34:43