2013-07-27 39 views
0

我是RSpec的新手,我有以下代碼。RSpec中的設置關係

class User < ActiveRecord::Base 
    attr_accessible :email, :name, :admin, :active, :password, :password_confirmation 

    has_many :venues 
    has_many :events 
    ... 
end 

class Venue < ActiveRecord::Base 
    attr_accessible :name, :url, :street, :city, :state, :description, :user_id 

    belongs_to :user 
    ... 
end 

FactoryGirl.define do 
    factory :user do 
    sequence(:name) { |n| "Person #{n}"} 
    sequence(:email) { |n| "foo#{n}@example.com"} 
    password "secret" 
    password_confirmation "secret" 

    factory :admin do 
     admin true 
    end 

    factory :active_user do 
     active true 
    end 
    end 

    factory :venue do 
    sequence(:name) { |n| "Venue #{n}"} 
    sequence(:url) { |n| "[email protected]#{n}"} 
    sequence(:street) { |n| "#{n} Main St."} 
    city "Chicago" 
    state "IL" 
    end 
end 

在我的測試,我想創建一個venue對象具有user_id設置爲user.id,但下面不工作:

describe "as active user" do 
    let(:active_user) { FactoryGirl.create(:active_user) } 
    let(:user_venue) { FactoryGirl.create(:venue, user: active_user) } 
    let(:other_venue) { FactoryGirl.create(:venue) } 

回答

0

嘗試在會場工廠改爲

# rspec/factories/venue.rb 
FactoryGirl.define do 
    factory :venue do 
    sequence(:name) { |n| "Venue #{n}"} 
    sequence(:url) { |n| "[email protected]#{n}"} 
    sequence(:street) { |n| "#{n} Main St."} 
    city "Chicago" 
    state "IL" 
    user 
    end 
end 

並以此方式在您的規格中使用它

describe "as active user" do 
    let(:active_user) { FactoryGirl.create(:active_user) } 
    let(:user_venue) { FactoryGirl.create(:venue, user_id: active_user.id) } 
    ... 
end