我们在做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