我寫了我的基本模型,並定義了它們的關聯以及遷移來創建關聯的表。我如何測試我的桌子設計是否正確地實現了我的關聯?
編輯 - 增加我特別想測試的重點。
我希望能夠測試:
- 的關聯被配置爲目的
- 表結構支持協會的正確
我已經爲我的所有車型編寫FG工廠,以期望擁有一套完整的測試數據但我無法掌握如何編寫一個spec來測試belongs_to和has_many關聯。
例如,給定has_many用戶的組織我希望能夠測試我的示例組織對我的示例用戶的引用。
Organization_Factory.rb:
Factory.define :boardofrec, :class => 'Organization' do |o|
o.name 'Board of Recreation'
o.address '115 Main Street'
o.city 'Smallville'
o.state 'New Jersey'
o.zip '01929'
end
Factory.define :boardofrec_with_users, :parent => :boardofrec do |o|
o.after_create do |org|
org.users = [Factory.create(:johnny, :organization => org)]
end
end
User_Factory.rb:
Factory.define :johnny, :class => 'User' do |u|
u.name 'Johnny B. Badd'
u.email '[email protected]'
u.password 'password'
u.org_admin true
u.site_admin false
u.association :organization, :factory => :boardofrec
end
Organization_spec.rb:
...
it "should have the user Johnny B. Badd" do
boardofrec_with_users = Factory.create(:boardofrec_with_users)
boardofrec_with_users.users.should include(Factory.create(:johnny))
end
...
此示例失敗,因爲Organization.users列表和比較用戶:johnny是同一工廠的單獨實例。
我意識到這並沒有遵循這些插件(FG,rspec)背後的BDD想法,但看到這是我的第一個rails應用程序,我不自然地前進而不知道我已經配置我的關聯和表格結構正確。
我改變了標題,並加強了我正在尋求解決的問題。我意識到沒有必要測試ActiveRecord本身,但我正在測試是否**我已**正確地實現了我的關聯,並使用適當的表格設計正確地支持了它們。 – 2010-04-25 17:47:32
夠公平的。參考我的第二個例子,我認爲足夠的關聯測試應該是'org.users.should include(user)'('has_many'方面)和'user.organization.should == org'('belongs_to'方面 – zetetic 2010-04-25 20:00:31
太好了,謝謝你,試試看。 – 2010-04-25 22:40:20