如何为相关模型数据说明FactoryGirl夹具?

时间:2011-09-19 23:02:21

标签: ruby-on-rails ruby ruby-on-rails-3 rspec rspec2

我正在使用Ruby on Rails 3.0.9,RSpec-rails 2和FactoryGirl。我想生成一些与用户帐户相关的 Factory关联模型数据(在User类中我说明了has_one :account关联),以便在以下方面做到以下几点: spec文件:

let(:user) { Factory(:user) } 

it "should have an account" do
  user.account.should_not be_nil # Note: 'user.account'
end

此时我有一个factories/user.rb文件,如下所示:

FactoryGirl.define do
  factory :user, :class => User do |user|
    user.attribute_1
    user.attribute_2
    ...
  end
end

factories/users/account.rb文件如下:

FactoryGirl.define do
  factory :users_account, :class => Users::Account do |account|
    account.attribute_1
    account.attribute_2
    ...
  end
end

为了处理规范文件中的RoR关联模型,正确\常见指示FactoryGirl数据的方式是什么?

1 个答案:

答案 0 :(得分:0)

首先,您不需要:class =>用户,因为它会自动推断。

FactoryGirl.define do
  factory :user do
    attribute_1      'Some'
    attribute_2      'Text'
  end
end

要在工厂中使用关联,只需直接包含名称:

FactoryGirl.define do
  factory :post do
    user
    title    'Hello'
    body     'World'
  end
end

在上面的示例中,用户将与帖子相关联。

您还可以使用命名工厂:

FactoryGirl.define do
  factory :post do
    association :user, :factory => :administrator
    title    'Hello'
    body     'World'
  end
end

documentation解释了这一切。