2011-11-29 82 views
3

任何時候當我創建一個工廠對象時,出現此錯誤,工廠在該對象上設置一個屬性 - 在本例中爲「名稱」。爲什麼???FactoryGirl RSpec創建工廠對象時沒有方法錯誤,其中工廠設置了該對象的屬性

businesses.rb

FactoryGirl.define do 
    factory :business do 

    factory :business_main do 
     name "Dave's Toys" 
    end 
    end 
end 

業務表

 Column  |   Type    |      Modifiers       
----------------------+-----------------------------+--------------------------------------------------------- 
id     | integer      | not null default nextval('businesses_id_seq'::regclass) 
name     | character varying(255)  | 
address_line1  | character varying(255)  | 
address_line2  | character varying(255)  | 
city     | character varying(255)  | 
state    | character varying(255)  | 
zip     | character varying(255)  | 

business_spec.rb

... 
business = Factory(:business_main) 
... 

# Failure/Error: business = Factory(:business_main) 
# NoMethodError:  undefined method `name=' for #<Business:0x007fc991684590> 

-

Using rails (3.1.3) 
Using factory_girl (2.3.2) 
Using factory_girl_rails (1.4.0) 
Using rspec-core (2.7.1) 
Using rspec-expectations (2.7.0) 
Using rspec-mocks (2.7.0) 
Using rspec (2.7.0) 
Using rspec-rails (2.7.0) 
+0

這很奇怪。你如何運行你的規格? –

+0

你想通過嵌套'business'和'business_main'這樣的工廠來完成什麼? –

+2

確認,我沒有在測試數據庫中運行我的遷移! – 99miles

回答

7

運行rake db:test:clone,然後所有測試數據庫列將被正確映射到活動記錄方法。

+0

這幫了我。謝謝!! –