在FactoryGirl的最新版本中,一些句法方法(例如Factory.create
)被折旧以支持其他几种语法,最值得注意的是FactoryGirl.create
和更简单的create
。
但是,经验表明,鉴于上下文,某些语法并不总是合适的。
以例如:
FactoryGirl.define do
factory :article do
after_create {|a| a.comments << create(:comment) }
end
factory :comment do
end
end
文章has_many评论,评论属于文章。在上述工厂中,a.comments << create(:comment)
发出错误Comment(#nnn) expected, got FactoryGirl::Declaration::Static
。将该行更改为a.comments << FactoryGirl.create(:comment)
,错误就会消失。
目前尚不清楚何时一种语法优先于任何其他形式。
答案 0 :(得分:5)
我了解到当前版本(3.2.0)中回调(例如after_create)不支持缩写表示法。这些信息直接来自FactoryGirl团队的Google团队。如果/它是在未来的版本中添加的话,我会更新这个问题。
答案 1 :(得分:1)
根据FactoryGirl documentation,如果要在调用create和build等方法时省略FactoryGirl模块前缀,则需要在rspec / test-unit模块中混合使用FactoryGirl方法,如下所示:
# rspec
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
end