【发布时间】:2016-08-12 01:15:04
【问题描述】:
我是 TDD 新手。我发现shoulda gem 能够测试数据库实体的列是否存在以及测试其索引的能力。
但是有必要在我的测试套件中包含列和索引的测试吗?
我是否需要担心在开发过程中可能会删除任何列和索引?
【问题讨论】:
标签: ruby-on-rails ruby unit-testing tdd shoulda
我是 TDD 新手。我发现shoulda gem 能够测试数据库实体的列是否存在以及测试其索引的能力。
我是否需要担心在开发过程中可能会删除任何列和索引?
【问题讨论】:
标签: ruby-on-rails ruby unit-testing tdd shoulda
不要测试数据库列;那只是测试实现。不要测试实现,测试行为。测试使用存储在这些列中的属性的功能。例外:如果您的架构有外部要求(这从未发生在我身上,但我可以想象),编写测试以证明这些要求得到满足可能会有所帮助。
测试索引?视情况而定。如果您是严格的测试驱动型,您可能希望为纯粹出于性能原因添加的每个索引编写一个测试。我很喜欢测试驱动,但我不写这样的测试;我只是创建索引。对指数的真正考验是它们对性能的影响。无论如何,测试是否存在必须存在的索引以支持您已经在测试的功能(主键、外键、唯一约束等)是没有意义的。
【讨论】:
我很少测试列和索引。如果您想确保您的数据库迁移或约束正确,您可以包含它。生产将是开发的逻辑副本。因此,如果您真的关心所有潜在风险,您可能会编写测试用例。
【讨论】: