我們在做RSpec 2的rails 3.2.1項目。我的問題是,我應該測試每個activerecord模型的基本持久性嗎?我曾經在C#/ NHibernate的日子裏這樣做過,以確保正確的表/映射在那裏。一個單元應該在rails中測試持久性嗎?
所以,如果我有姓名,地址和電話領域的客戶,我可能會寫這樣一個RSpec:
describe Customer do
it "saves & retrieves its fields to and from the db"
c = Customer.new
c.name = "Bob Smith"
c.address = "123 some street"
c.phone = "555-555-5555"
or = Order.new
c.orders << or
c.save
found = Customer.find(c.id)
found.should_not be(c)
found.name.should == c.name
found.address.should == c.address
found.phone.should == c.phone
found.orders.count.should == 1
found.orders[0].id.should == or.id
end
end
這是「最佳實踐」或常見的的Ruby/Rails/rspec的世界嗎?我還應該指出,重點不是測試rails本身在做什麼,而是測試在db和模型中設置了正確的字段和關係。
我想我使用的是錯誤的術語。我忘記了單元測試和集成測試之間的區別。所以在你看來,在rails中爲這些類型的映射創建集成測試是一個好主意嗎?這是常見的嗎? – fregas 2012-02-28 23:00:43
我必須承認,我對Rails不是很熟悉,因爲我在.net框架中擁有大部分經驗,但是,對於使用集成測試來測試持久層是非常普遍的。此外,從技術上講,任何持久層測試都將是集成測試,任何SAT測試都會包含持久性驗證。 – 2012-03-01 07:57:21
+1用於解釋何時適用,即使它在OP描述的情況下不合適。 – 2014-09-08 04:17:27