不清楚何时使用特定的FactoryGirl语法

时间:2012-04-27 22:47:30

标签: ruby-on-rails-3 factory-bot

在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),错误就会消失。

目前尚不清楚何时一种语法优先于任何其他形式。

2 个答案:

答案 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