6

在最新版本的 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

其中文章有_许多评论,评论属于_文章。在上述工厂中,a.comments << create(:comment)发出错误Comment(#nnn) expected, got FactoryGirl::Declaration::Static。将该行更改为a.comments << FactoryGirl.create(:comment),错误消失。

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

4

2 回答 2

5

我了解到,从当前版本(3.2.0)开始,回调(例如 after_create)不支持缩写符号。这些信息直接来自 FactoryGirl 团队通过 Google 群组。当/如果它被添加到未来的版本中,我会更新这个问题。

于 2012-05-02T07:33:57.883 回答
1

根据FactoryGirl 文档,如果您想在调用 create 和 build 等方法时省略 FactoryGirl 模块前缀,则需要在 rspec/test-unit 模块中混入 FactoryGirl 方法,如下所示:

# rspec
RSpec.configure do |config|
  config.include FactoryGirl::Syntax::Methods
end
于 2012-04-28T16:01:41.183 回答