我是TDD的新手。我发现shoulda
gem能够测试数据库实体是否存在列以及测试其索引的能力。
我是否需要关注在开发过程中可能删除任何列和索引?
答案 0 :(得分:3)
不要测试数据库列;那只是测试实施。不要测试实现,测试行为。测试使用存储在这些列中的属性的功能。例外:如果你的架构有外部要求(我从来没有想到这个,但我可以想象),编写测试以证明满足这些要求可能会有所帮助。
测试索引?这取决于。如果你是严格测试驱动的,你可能想为每个索引编写一个测试,纯粹是出于性能原因而添加的。我非常考试,但我不会写这样的测试;我只是创建索引。对指数的真正考验是它们对绩效的影响。在任何情况下,没有必要测试是否存在必须存在的索引以支持您已经测试的功能(主键,外键,唯一约束等)。
答案 1 :(得分:0)
我很少测试列和索引。如果要确保数据库迁移或约束正确,可以包含它。生产将是发展的合理副本。因此,如果您真的关心所有潜在的风险,您可以编写测试用例。