Factory Girl - Почему записи постоянно создаются? - PullRequest
1 голос
/ 20 марта 2011

Я новичок на заводской девушке.То, что я пытаюсь сделать, это создать 2 пользователей, которые принадлежат к группе, к которой присоединяется модель разрешений.Вот что у меня есть.Когда я запускаю этот rspec, он создает более 2 пользователей, 4+.Зачем?спасибо

фабрики.rb:

require 'factory_girl'

Factory.define :user do |f|
  f.sequence(:fname) { |n| "fname#{n}" }
  f.sequence(:lname) { |n| "lname#{n}" }
  f.sequence(:email) { |n| "email#{n}@google.com" }
  f.password               "password"
  f.password_confirmation { |u| u.password }
  f.invitation_code        "xxxxxxxx"
end

Factory.define :group do |f|
  f.association :user
  f.sequence(:name) { |n| "myGroup#{n}" }
  f.sequence(:private_email) { |n| "myGroup#{n}" }
end

Factory.define :permission do |f|
  f.role_id         1
  f.user {|i| i.association(:user)}
  f.group {|i| i.association(:group)}  
  f.creator_id {|i| i.association(:user).id}
end

Входящий_почта_контроллер_spec.rb:

describe IncomingMailsController do

  include Devise::TestHelpers

  before do
    @user = Factory.create(:user, :permissions => [Factory.create(:permission)])
    @user2 = Factory.create(:user, :permissions => [Factory.create(:permission)])  
    @group = Factory(:group)
  end


  it "should create a new IncomingMail record in the db" do
  ....
  end
....

1 Ответ

4 голосов
/ 20 марта 2011

Это потому, что Factory.create (: user ...) создает 1 одного пользователя (у вас есть два из них, так что тут сразу два пользователя).И создание двух новых Factory.create (: permissions) также создает пользователя по правилам, которые вы установили в своем определении (ваши ассоциации), таким образом, равным 4.

Если вы хотите создать только двух пользователей здесь,Вы могли бы сделать

@user = Factory.create(:user)
@user1 = Factory.create(:user)
@perm1 = Factory.create(:permission, :user => @user)
@perm2 = Factory.create(:permission, :user => @user1)
...